2015-10-20 37 views
-2
class Blog(models.Model): 
    title = model.CharField(max_length=100) 
    text = TextField() 
    tags = ManyToManyField(‘Tag’,blank=True) 
    … 

class Tag(models.Model): 
    tag = models.ChatField(max_length=50, unique=True) 
    … 

我試圖找到一種簡單的方式來找到博客有相同的標籤。 例如,某個博客的標籤爲「木頭」,「桌子」,「傢俱」。我想找到一些至少有一個標籤的博客。如何在Django模式中使用ManyToManyField

+0

請具體說明您的問題。 – kartikmaji

回答

0

這裏查看文檔瞭解如何過濾關係:https://docs.djangoproject.com/en/1.8/topics/db/queries/#lookups-that-span-relationships

要了解如何擁有多個過濾器(帶有標籤「木頭」或「臺」或「傢俱」一個博客),看到這裏的例子: https://docs.djangoproject.com/en/1.8/topics/db/queries/#spanning-multi-valued-relationships

下面的代碼應該完成你想要的:

blogs = Blog.objects.filter(tags__tag='wood').filter(tags__tag='desk').filter(tags_tag='furniture') 
+0

運行時可能如何?在運行時,我不知道有多少標籤。 – eachone

+0

@eachone「在運行時」是什麼意思?我上面發佈的代碼可以讓您找到至少有一個標籤的博客(並將它們保存在一個名爲'blogs'的變量中)。 「博客」內的項目數量是與過濾器匹配的標籤數量。 – user2719875