Django JSONField 查询值列表,其中过滤器列表中至少有 1 个值

时间:2021-07-14 03:07:39

标签: python mysql django django-models

我有这个模型:

class Movie(models.Model):
    genres = models.JSONField(default=dict, null=False, blank=False)

此列中的数据包含流派列表,例如:

["biography", "comedy", "crime", "drama", "romance"]

当我尝试执行以下代码时,我得到了空:

wanted_genres = ['action', 'adventure', 'animation', 'biography', 'comedy', 'crime', 'documentary', 'drama', 'family']

Movie.objects.all().distinct().filter(genres__contains = wanted_genres)

我想获得在列流派中至少找到 1 个流派 wanted_genres 的结果。我尝试了很多过滤技术,但我找不到一个好的数组到数组比较方法。需要帮忙。谢谢。

1 个答案:

答案 0 :(得分:1)

使用 contains_by 而不是 contains

Movie.objects.all().distinct().filter(genres__contained_by = wanted_genres)

有关更多信息,您可以查看official documentation

相关问题