Django搜索多对多查询

时间:2013-05-17 12:54:25

标签: django django-models

我正在尝试使用 ManyToMany 关系查询搜索, 这就是我到目前为止所做的:

designs = designs.filter(Q(title__icontains = search) | 
                         Q(tags__icontains = search))

您知道我如何搜索查询中的tags.title字段吗?

以下是型号,我把它们清理干净,所以它们不长:)

class Design(models.Model):
    title = models.CharField(max_length = 50, default = "")
    slug = models.SlugField(unique = True)   
    user = models.ForeignKey(User, related_name = "design_user")
    description = models.TextField()
    tags = models.ManyToManyField(to = Tags)

class Tags(models.Model):
    title = models.CharField(max_length = 50, unique = True)

    # Allows the category to list as a dropdown in the admin
    def __unicode__(self):
        return self.title

我查找的大部分问题都是使用过滤器而我不是Django主人所以我希望这不会增加一个重复的问题。

2 个答案:

答案 0 :(得分:9)

使用正确的field_lookuptags__title__icontains = search

执行此操作
designs = designs.filter(Q(title__icontains = search) | 
                         Q(tags__icontains = search)  |
                         Q(tags__title__icontains = search))

字段查找非常有用,您应该查看the docs

答案 1 :(得分:0)

您可以使用tags__title__icontains作为

执行此操作
designs = designs.filter(Q(title__icontains = search) | 
                         Q(tags__title__icontains = search))