Django模型 Q对象实现复杂查找,对于初学者来说感觉有一种陌生感。不过我们要进行复杂查找时,就到了它的用武之地了。
或许你想在filter()里面使用或条件...纠结在django中怎么实现...
接下来,分享Q对象实现复杂查找。
适用情况:执行更复杂的查询(比如,实现筛选条件的 OR、AND 关系)
例子:
models如下:
1 | class Article(models.Model): |
2 | headline = models.CharField(max_length=50) |
3 | pub_date = models.DateTimeField()<br><br><br><br>想查询headline字段开头以'hello',或者结尾以'Goodbye'的数据。<br><br>代码实现: |
1 | Article.objects.filter(Q(headline__startswith='Hello') | Q(headline__startswith='Goodbye')) |
AND的实例:
1 | Article.objects.filter(~Q(pk=self.a1) & ~Q(pk=self.a2)) |
分享一个比较全面的demohttps://github.com/django/django/blob/master/tests/modeltests/or_lookups/tests.py