class Tag(models.Model):
name = models.CharField(maxlength=100)
class Blog(models.Model):
name = models.CharField(maxlength=100)
tags = models.ManyToManyField(Tag)
简单的模型只是问我的问题。
我想知道如何用两种不同的方式使用标记查询博客。
Blog.objects.filter(tags_in=[1,2]).distinct()
Tag和Blog只是一个例子。
请不要重新设计轮子并使用django-tagging application这正是为您的用例而创建的。它可以执行您描述的所有查询,以及更多的查询。
如果需要将自定义字段添加到标记模型中,还可以查看my branch of django-tagging。
您可以使用Q objects for#1:
联合和交叉,我相信,是有点超出了Django ORM的范围,但这是可能的。以下示例来自名为django-tagging的Django应用程序,该应用程序提供了功能。Line 346 of models.py:
在第二部分中,您将寻找两个查询的联合,基本上
第三部分我相信你在找一个十字路口。见line 307 of models.py
我用Django 1.0测试过:
“或”查询:
或者你可以使用Q类:
“and”查询:
我不确定第三个,您可能需要使用SQL来完成它。
相关问题 更多 >
编程相关推荐