JSONField 在 Django 3.1 中不允许为 null

Jef*_*a H 3 python django django-rest-framework

我试图JSONField在 Django 中使用 a ,有时我需要它为 null,所以我用 定义它null=True, blank=True,但是当我使用序列化器验证时,我得到my_data: [This field can't be null]. 这是我的代码:

模型.py

class MyModel(models.Model): 
    my_data = models.JSONField('data', null=True, blank=True, editable=False)
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class MyModelSerializer(serializers.ModelSerializer):   
    my_data = serializers.JSONField()
    class Meta:
        model = MyModel
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

视图.py

def save_my_data(self, request):
  info['my_data']  = None
  serializer = serializers.MyModelSerializer(data=info)     
  # validate the data
  print( serializer.is_valid() ) #returns False
  print( serializer.errors ) #returns my_data: [This field can't be null]
Run Code Online (Sandbox Code Playgroud)

对此有什么建议吗?提前致谢。

GPr*_*ost 5

在序列化器中设置allow_null=True

class MyModelSerializer(serializers.ModelSerializer):   
    my_data = serializers.JSONField(allow_null=True)
Run Code Online (Sandbox Code Playgroud)

在 DRF 中allow_nullFalse默认的,即使您的模型配置为接受null.