Django ~Q 查询

Django ~Q queries

这是我的错误,我真的找不到任何与我的问题类似的东西:

from django.db.models import Q    
_entry = Entry.objects.get(Q(slug=slug, author=self.author) & ~Q(id=self.id))

TypeError: bad operand type for unary ~: 'Q'

您尝试使用 Qs 的替代方法是使用 filter()+exclude()+get():

_entry = Entry.objects.filter(slug=slug, author=self.author).exclude(id=self.id).get()

不仅'&'还有逗号','在django Q对象中代表AND所以你也可以试试:

from django.db.models import Q    
_entry = Entry.objects.get(Q(slug=slug), Q(author=self.author) , ~Q(id=self.id))

尽管我无法重现您遇到的错误。另外请确保 slug、self.author 和 self.id 具有正确类型的数据以进入各自的字段。

Here 是完整参考文档