Django模型 Q对象实现复杂查找

  Django模型 Q对象实现复杂查找,对于初学者来说感觉有一种陌生感。不过我们要进行复杂查找时,就到了它的用武之地了。

  或许你想在filter()里面使用或条件...纠结在django中怎么实现...

  接下来,分享Q对象实现复杂查找。

  适用情况:执行更复杂的查询(比如,实现筛选条件的 OR、AND 关系)

  例子:

 models如下:

1class Article(models.Model):
2    headline = models.CharField(max_length=50)
3    pub_date = models.DateTimeField()<br><br><br><br>想查询headline字段开头以'hello',或者结尾以'Goodbye'的数据。<br><br>代码实现:
1Article.objects.filter(Q(headline__startswith='Hello') | Q(headline__startswith='Goodbye'))

 

 

AND的实例:

1Article.objects.filter(~Q(pk=self.a1) & ~Q(pk=self.a2))

 

分享一个比较全面的demohttps://github.com/django/django/blob/master/tests/modeltests/or_lookups/tests.py

posted @ 2012-09-22 11:25  ChaunceyHao  阅读(424)  评论(0)    收藏  举报