簡體   English   中英

DJango包含不適用於JSONField

[英]DJango contains does not work on JSONField

我創建了這樣的模型:

class Customer(models.Model):
    name = models.CharField(max_length=200)
    data = JSONField()

並且數據歸檔具有以下結構:

Customer.objects.create(name='David', data={
    'key1': 'text1',
    'key2': 'text2',
    },
})

問題是當我想通過包含查詢時它不會返回任何結果。

Customer.objects.filter(data__key1__contains='t')

生成的sql查詢結果不能為'json like'結構提供正確的sql。

嘗試這個:

Customer.objects.filter(data__key1__icontains='t')

Django中的JSONField與json.dumps()一起保存

你可以試試:

import json
search = json.dumps({'key1': 'text1'})[1:-1] # removed { and }
Customer.objects.filter(data__contains=search)

如果此代碼失敗,您可以嘗試下一個:

search = '"key1":"text1"'
Customer.objects.filter(data__contains=search)

https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#std:fieldlookup-hstorefield.contains

Customer.objects.filter(data__contains={'key1': 'text1'})

返回的對象是鍵值對的給定字典全部包含在字段中的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM