class Library(models.model):
book = JSONField(default=[], blank=True, null=True)
'book' 的可能结构是 {'title':'' ,'no_of_pages': '', 'author_name': '', 'color': '', edition: ''}
我正在尝试编写一个 django 查询,它只返回 book 至少有一个非空值键的记录(即title或no_of_pages或author_name或color或edition有一些值)
一种可能的解决方案是:
Author.objects.filter(
~Q(book__title='') |
~Q(book__no_of_pages='') |
~Q(book__author_name='') |
~Q(book__color='') |
~Q(book__edition='')
)
有没有更好的方法来做到这一点?在某些情况下,书籍将来可能会有一些额外的键,例如出版商或可用性
如何在不提及字段的特定键的情况下执行此过滤器(只需检查至少一个具有某个值的键)?或者任何更短的方法来编写这个查询与所有提到的键?