Django base 10 转换整数时无效字面量

2 投票
1 回答
8173 浏览
提问于 2025-04-18 04:55

我正在用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)

撰写回答