0

我在查询集中使用 __in 有一个奇怪的问题(与 Django 1.4 和 SQLite 一起使用)。

我有一个带有字段的模型:

city=somecity

activities=[u'one',u'two',u'three']

activity=one

现在

city = request.user.account.city
activities = request.user.account.activities
queryset = profile_model._default_manager.filter(city__exact=city,activity__in=activities)

不起作用,但是如果我将其更改为

city = request.user.account.city
activities = request.user.account.activities
queryset = profile_model._default_manager.filter(city__exact=city,activity__in=[u'one',u'three'])

那么就可以了。我获得活动的方式与获得城市的方式相同,所以这应该不是问题。我在其他查询集中使用类似的东西

activities__contains=activity

但是在这个查询集中我正在搜索“活动”,如果我在这个查询集中做同样的事情,它会返回错误,因为没有这样的字段(在这种情况下是“一个”)。

我在尝试

activity__in=list(activities)

但它也不起作用。

如果我把它放到模板中:

{% if activity in activities %} 
yes 
{% else %} 
no
{% endif %}

它工作没有问题。

知道为什么吗?谢谢!

4

1 回答 1

0

假设活动是与另一个模型的关系,我相信它应该是

activities = request.user.account.activities.all()

...作为request.user.account.activities经理并request.user.account.activities.all()返回所有活动。我相信在这种情况下,模板标签“假定”了 all()。Django 模板做了很多复杂的事情来帮助快速开发。

另请参阅此处https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward了解更多信息。

于 2013-09-30T18:56:20.497 回答