Django模型中的自定义字段
问题描述:
是否有可能在django模型中有自定义字段(非模型字段)。例如,我有以下型号: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,但这不能正常工作,地址始终为空。 仅供参考,我使用的是Django-nonrel,因为我使用的是mongodb数据库。
答
为什么不使用字段的可编辑属性? 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)
希望这有助于。
+0
这不利于解决问题。 – Spider
AddressField是什么扩展? – masnun
它是一个由私人开发者开发的类(https://github.com/furious-luke/django-address)。 – Spider