Django base 10 转换整数时无效字面量
我正在用Django做一个简单的搜索结果页面。
用户可以通过输入文本来搜索,并从下拉菜单中选择一个城市。
查询的代码如下:
if 'query' in request.GET and request.GET['query']:
city = request.GET['city']
q = request.GET['query']
ct = Classified.objects.filter(name__icontains=q).filter(city__exact=city)
return render(request, 'template/search.html', {'ct': ct, 'query': q})
分类信息的模型如下:
class Classified(models.Model):
name = models.CharField(max_length=256, unique=True)
email = models.CharField(max_length=100)
category = models.ForeignKey(Categories)
phone_number = models.IntegerField(max_length=10, default=0)
address = models.CharField(max_length=1000)
id = models.IntegerField(primary_key=True)
city = models.ForeignKey(Cities)
image = models.ImageField(blank=True, upload_to='static/img/')
def __unicode__(self):
return self.name
城市的信息如下:
class Cities(models.Model):
name = models.CharField(max_length=256)
def __unicode__(self):
return self.name
在搜索时,/search/页面给我报了以下错误:
invalid literal for int() with base 10: 'Searched-city'
我漏掉了什么呢?
1 个回答
5
“City”是一个外键,你需要更新你的查询,明确地通过这个关系来访问,具体来说就是要写成“city__name
__exact”。
ct = Classified.objects.filter(name__icontains=q).filter(city__name__exact=city)