首页 > 解决方案 > 如何使用 Django 过滤器根据键值对从 postgres JSON 字段中检索这些行

问题描述

在 Django 中,我有一个模型:

class NewModelItem(models.Model):
    model = models.ForeignKey(to=NewModel, on_delete=models.CASCADE, related_name='new_model_item')
    field_data = models.JSONField()
    link_data = models.JSONField(null=True)

并喜欢检索:

3    {"name": "105000-001-001", "customer_name": "belangrijk sample"}    4    {"index": 4, "project": [1]}
6    {"name": "105000-001-002", "customer_name": "nog een belangrijk sample"}    4    {"index": 4, "project": [1]}

基于最后一个字段(即 link_data 字段),特别是当项目包含 1 时。

我尝试将其作为整数而不是数组,但下面的过滤器不会以任何方式检索它们。

lookup = 'link_data__project'
related_model = 4  # this is the field before link_data
id = 1
data = NewModelItem.objects.filter(**{lookup: id, 'model': related_model})

标签: djangodjango-filterdjango-jsonfield

解决方案


推荐阅读