如何根据输入的标签过滤事件?

时间:2013-11-20 06:47:18

标签: django python-2.7 django-models

朋友们,我有以下模特。

class Event(models.Model):
 user = models.ForeignKey(UserInfo, null=False)
 event_category = models.ForeignKey(EventCategory, null=False)
 event_type = EventTypeEnumField(max_length=10, blank=True, choices=EVENT_TYPE )
 title = models.CharField(max_length=40)
 description = models.CharField(max_length=160)
 created = models.DateTimeField(auto_now_add=True

class Tags(models.Model):
 event = models.ForeignKey(Event)
 name = models.CharField(max_length=100, null=True, blank=True)

一个事件可以有多个标签,假设event1有标签'x','y','z',event2有'x','y'等等。现在如何过滤具有'x'的事件'y'。,进一步我们应该能够过滤更多的标签,而不仅仅是'x'和'y'。如何在django中为此编写查询?

2 个答案:

答案 0 :(得分:1)

要返回给定标签名称列表的事件,请使用以下示例中的内容:

tags = ['x', 'y']
events = events = Event.objects.all()
for tag in tags:
    events = events.filter(tags__name=tag)

答案 1 :(得分:0)

试试这个

Event.objects.filter(tags__name='x').filter(tags__name='y')