是否可以在django模型中使用自定义字段(非模型字段)。例如,我有以下模型:
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(blank=True, default=date.today)
address = AddressField(blank=True, null=True)
地址是非模型字段。我也有这个序列化器:
class PatientSerializer(serializers.Serializer):
firstName = serializers.CharField()
lastName = serializers.CharField()
occupation = serializers.CharField()
gender = serializers.CharField()
dateOfBirth = serializers.DateField()
address = serializers.SerializerMethodField()
def create(self, validated_data):
"""
Create and return a new patient
"""
return Patient.objects.create(**validated_data)
def get_address(self, obj):
return obj.address
我尝试在序列化程序中将其设置为SerializerMethodField,但这不能正常工作,地址始终为null。 仅供参考,我使用Django-nonrel,因为我使用的是mongodb数据库。
答案 0 :(得分:0)
为什么不使用该字段的editable属性? https://docs.djangoproject.com/en/1.10/ref/models/fields/#editable
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(blank=True, default=date.today)
address = AddressField(blank=True, null=True, editable=False)
希望这有帮助。