我有两个基本上是这个模型:
Book(Model):
title = models.CharField(max_length = 250)
read_by = ManyToManyField(User)
...
User(Model):
firstName = models.CharField(max_length = 250)
lastName = models.CharField(max_length = 250)
...
现在,如何为每本书创建一个包含“read”布尔值的书籍列表?在mysql中,我可以使用带有OUTER JOIN的ISNULL()。我怎么能在Django中这样做?我是否必须使用原始mysql?
澄清:我想为每个用户创建列表,以便每个用户都可以“勾选”他们阅读的每本书。
答案 0 :(得分:1)
books = Book.objects.annotate(read=models.Count('read_by'))
然后,如果你只想要一本阅读书籍列表::
read_books = books.exclude(read=0)
或者你可以使用每个实例的read
无效属性,作为一个整数,显然会评估未读书籍的正确布尔值。