Django queryset,__不在动态列表上工作

时间:2013-09-30 16:20:21

标签: django django-queryset

在queryset中使用__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

但在这个查询集中我正在搜索“活动”,如果我在此查询集中执行相同操作,则会返回错误,因为没有这样的字段(在本例中为“one”)。

我在尝试

activity__in=list(activities)

但它也无效。

如果我把它作为模板:

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

它没有问题。

知道为什么吗? 谢谢!

1 个答案:

答案 0 :(得分: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