我想根据不同型号的许多字段执行一些过滤器,但是卡住了。
我有这些模型
class Category(models.Model):
eventtype = models.CharField(max_length=10, choices=event_type)
category = models.CharField(max_length=60)
values = models.CharField(max_length=60,null=True, blank=True)
class Userlogin(models.Model):
name = models.CharField(max_length=100, null=True)
category = models.ManyToManyField(Category)
class Events(models.Model):
eventtype = models.CharField(max_length=4)
status = models.CharField(max_length=1, choices=status, verbose_name='Status', default='I')
category = models.ManyToManyField(Category)
因此,基于我的用户选择的类别(Userlogin类),我想过滤事件。 例如:
Userlogin 80 has choose ['openair','night']
Events:
Event 1 - ['openair','couples']
Event 2 - ['couples']
Event 3 - ['night','openair']
那应该返回事件1和3。
所以我有一个包含其他一些评估的查询集,现在我想用“活动”类别“加入”用户类别。
events = Events.object.filter(status='A')
events = events.filter(eventtype='X)
#some other complex filtering, based on other models
events = events.filter(category??????) #stuck here
我怎么能这样做?这里的诀窍是我需要继续使用这个查询集,所以我想使用过滤方法。
我正在使用django 1.9
答案 0 :(得分:0)
# returns all the events which have any of the user_login categories
events = events.filter(category__in=user_login.category.all()).distinct()
django文档提供了有关跨模型查询m2m关系的详细信息。见https://docs.djangoproject.com/en/1.9/topics/db/examples/many_to_many/