【问题标题】:'Q' object has no attribute 'split' - Django'Q'对象没有属性'split' - Django
【发布时间】:2014-05-15 16:58:37
【问题描述】:

我有一个模型:

class Authors(models.Model):
   name = models.TextField()
   person = models.ForeignKey(Person)

和查询:

authors = Author.objects.filter(
                                (Q(name__iregex=r"\y{0}\y".format(s1)),
                                ~Q(name__iregex=r"\y{0}\y".format(s2))
                                ),
                                person=None).order_by('-id')

我收到错误:

'Q' object has no attribute 'split'

这是为什么?虽然我没有使用split().. 错误行在此查询行中。

【问题讨论】:

标签: python django django-q


【解决方案1】:

我认为您需要将Q() 过滤器与|& 等逻辑运算符结合起来。

authors = Author.objects.filter(
                                (Q(name__iregex=r"\y{0}\y".format(s1)) &
                                ~Q(name__iregex=r"\y{0}\y".format(s2))
                                ),
                                person=None).order_by('-id')

【讨论】:

  • 我想,, 留给&,不是吗?
  • 我认为因为您将 Q() 对象包裹在括号中,所以您需要明确使用 &。即,您有filter( (Q(), Q()), person=None)。更改为& 有效吗?我对这个答案并不完全自信 TBH 哈哈
  • 谢谢,@Sohan Jain。我看到他们声明了Q objects can be combined using the & and | operators. When an operator is used on two Q objects, it yields a new Q object.,但这些示例没有显示任何&s,并且它们隐含在过滤器中。如果文档在需要显式 & 时显示出来会很好,而不是必须查找“拆分”错误。再次感谢,这让我摆脱了困境!
  • 其实我仍然看不清楚什么时候我们必须使用显式和/或符号以及逗号分隔的 Q 就足够了......
猜你喜欢
  • 2016-07-25
  • 2016-09-11
  • 2023-03-13
  • 2019-10-21
  • 1970-01-01
  • 2012-08-21
  • 2021-04-05
  • 2017-07-02
  • 2016-01-31
相关资源
最近更新 更多