gpt4 book ai didi

python - 在 Django 查询集过滤器中,如何检查 json 字段中的至少一个键是否具有非空值?

转载 作者:行者123 更新时间:2023-12-05 07:33:44 32 4
gpt4 key购买 nike

class Library(models.model):
book = JSONField(default=[], blank=True, null=True)

'book' 的可能结构是 {'title':'' ,'no_of_pages': '', 'author_name': '', 'color': '', edition: ''}

我正在尝试编写一个 Django 查询,该查询仅返回书籍至少有一个具有非空值的键的记录(即 titleno_of_pages author_namecoloredition 有一定的值(value))

一个可能的解决方案是这样的:

Author.objects.filter(
~Q(book__title='') |
~Q(book__no_of_pages='') |
~Q(book__author_name='') |
~Q(book__color='') |
~Q(book__edition='')
)

有没有更好的方法来做到这一点?在某些情况下,图书将来可能会有一些额外的键,例如 publisheravailabilty

如何在不提及字段的特定键的情况下执行此过滤器(只需检查至少一个具有某个值的键)?或使用提到的所有键编写此查询的任何更短的方法?

最佳答案

Author.objects.filter(book__has_any_keys=['title', 'no_of_pages', 'author_name', 'color'])

按照 documentation 中的说明尝试此操作,如果这对你有用的话。

关于python - 在 Django 查询集过滤器中,如何检查 json 字段中的至少一个键是否具有非空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50432152/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com