【问题标题】:Django JSONField query on a list of values where at least 1 value is in the filter listDjango JSONField 查询过滤器列表中至少有 1 个值的值列表
【发布时间】:2021-09-23 01:07:01
【问题描述】:

我有这个模型:

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 的结果。我尝试了很多过滤技术,但我找不到一个好的数组到数组比较方法。需要帮忙。谢谢。

【问题讨论】:

    标签: python mysql django django-models


    【解决方案1】:

    使用 contains_by 代替 contains

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

    更多信息可以查看official documentation

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2016-03-25
      • 1970-01-01
      • 2017-02-21
      • 2020-10-16
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2019-07-12
      相关资源
      最近更新 更多