Django JSONField和Q对象

时间:2017-04-11 15:35:22

标签: django django-models

我需要做类似的事情:

# models.py
from django.contrib.postgres.fields import JSONField,

class MyModel():
    ***
    **
    admin_fields = JSONField(_('admin fields'), blank=True, null=True, help_text=admin_fields_help_text)


my_instances = MyModel.objects.filter((Q(my_model_id=pk) & 
        Q(children__isnull=True)) & 
       ~Q(admin_fields__status__contains='deleted'))

或者

获取id=pkchildren__isnull=True的所有记录,而JSONField admin_fields不得包含status==deleted

目前     admin_fields = {'status':'已删除'}

相反,它仅返回具有

的记录
admin_fields = {'status': 'deleted'}

~Q()是否与JSONField无关?

想法?

谢谢,

d

1 个答案:

答案 0 :(得分:1)

您可以使用exclude()方法执行您想要执行的操作。

MyModel.objects.filter(my_model_id=pk, children__isnull=True).exclude(admin_fields__contains={'stat‌​us': 'deleted'})