我有这些样本数据库模型Django查询比较两个foreignkey字段?
class Book(models.Model):
name = CharField()
price = IntegerField()
class Author(models.Model):
name = CharField()
book = ForeignKey(Book, related_name='authors')
type = CharField(choices=('high','medium','low'))
class Random(models.Model):
book = Foreignkey(Book, related_name='randoms')
type = CharField(choices=('high','medium','low'))
rank = PositiveIntegerField()
数据库对象: -
- B1 =书( 'BOOK1',25)
B2 =书( 'Book2中',30)
作者( '作者1',B1, '高')
- 作者( 'author2',B1, '媒介')
- 作者( 'author3',B1, '媒介')
作者( 'author4',B2, '低')
作者( 'author5',B2, '低')
作者( 'author6',B2, '低')
随机(B1, '高',1)
随机(B1, '中',2)
- 随机(B1, '低',5)
- 随机(B2, '低',3)
- 随机(B2, '高',0)
- 随机(B2, '中',0 )
将会有一个Random
模型,其rank
表示一个特定类型的书的作者的正确计数。 例如,如果一本书有随机(book,'high',20)。那么这意味着必须有20位作者的high
类型。如果有超过或少于20位作者,那么这是一个错误。 我想过滤那些有这种类型的错误的对象Book
。
这里b1
有0个类型为low的作者,但它有Random对象,其中'low'的排名是5。意思是必须有5个类型为low的作者。 b1
有错误。 但这并非如此b2
如何过滤这些书籍对象?
任何方法与适当的django查询做到这一点? –
在wrong_book列表中存在重复的书对象错误。所以我们应该使用set而不是list。 –
@HiteshGarg感谢您的更正请参阅我的编辑。 – badiya