2015-10-20 35 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