Django错误:您可以';t将dateOfBirth(不可为空的字段)设置为None
我在mongodb中使用Django Nonl。我有以下型号: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
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)