2016-08-11 27 views
1

我使用的是带有mongodb的Django-nonrel。我有以下型号:Django错误:您无法将dateOfBirth(一个不可为空的字段)设置为无

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:

IntegrityError at/records/ 您不能将dateOfBirth(一个不可为空的字段)设置为None!

IntegrityError at /records/ 
You can't set dateOfBirth (a non-nullable field) to None! 

我看不到错误在哪里,如您所见,dateOfBirth并非真的是空的。

回答

0

我认为问题发生在你的串行中创建方法(假设是在代码中没有错字,你已经张贴在这里)

def create(self, validated_data): 
    """ 
    Create and return a new patient 
    """ 
    return Patient.objects.create()(**validated_data) 

在你不及格validated_data创建方法的返回语句。尝试将其更改为

return Patient.objects.create(**validated_data) 

在模型等领域都有指定的默认值,因此Django是抱怨只有出生日期。

+0

我试过这个,不幸的是它没有工作。仍然有同样的错误。 – Spider

+0

我试图设置一个默认值dateOfBirth,它现在工作正常,谢谢! – Spider

相关问题