Django错误:您可以';t将dateOfBirth(不可为空的字段)设置为None

Django错误:您可以';t将dateOfBirth(不可为空的字段)设置为None,django,mongodb,Django,Mongodb,我在mongodb中使用Django Nonl。我有以下型号: class Patient(models.Model): firstName = models.CharField(max_length=100, blank=True, default='') lastName = models.CharField(max_length=100, blank=True, default='') occupation = models.CharField(max_length

我在mongodb中使用Django Nonl。我有以下型号:

class Patient(models.Model):
    firstName = models.CharField(max_length=100, blank=True, default='')
    lastName = models.CharField(max_length=100, blank=True, default='')
    occupation = models.CharField(max_length=100, blank=True, default='')
    gender = models.CharField(max_length=50, blank=True, default='')
    dateOfBirth = models.DateField()
    address = AddressField();
我还提供了此模型的序列化程序:

class PatientSerializer(serializers.Serializer):
    firstName = serializers.CharField()
    lastName = serializers.CharField()
    occupation = serializers.CharField()
    gender = serializers.CharField()
    dateOfBirth = serializers.DateField()
    address = AddressField();

    def create(self, validated_data):
        """
        Create and return a new patient
        """
        return Patient.objects.create()(**validated_data)
最后,我使用的是视图:

def patient_list(request):
    # Create a new patient 
    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = PatientSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data, status=201)
        return JSONResponse(serializer.errors, status=400)
我发送此JSON请求:

{"firstName":"Yasir","lastName":"Khan","occupation":"Engieneer","gender":"male","dateOfBirth":"2016-08-09","address":"1, avenue Rosa Parks"}
当我尝试此操作时,我得到一个错误,即dateOfBirth为none:

完整性错误/记录/ 不能将dateOfBirth(不可为空的字段)设置为None


我看不出错误在哪里,正如你所看到的,dateOfBirth并不是真的空的

我认为问题发生在序列化程序中的create方法中(假设您在此处发布的代码中没有输入错误)

在return语句中,您并没有将经过验证的_数据传递给create方法。试着把它改成

return Patient.objects.create(**validated_data)

模型中的其他字段指定了默认值,因此Django只抱怨dateOfBirth。

我认为问题发生在序列化程序中的create方法中(假设您发布的代码中没有输入错误)

在return语句中,您并没有将经过验证的_数据传递给create方法。试着把它改成

return Patient.objects.create(**validated_data)

模型中的其他字段都指定了默认值,所以Django只抱怨出生日期。

我尝试了这个,但不幸的是它不起作用。仍然有相同的错误。我试图将默认值设置为dateOfBirth,它现在可以正常工作,谢谢!我试过了,可惜没用。仍然有相同的错误。我试图将默认值设置为dateOfBirth,它现在可以正常工作,谢谢!
return Patient.objects.create(**validated_data)