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数据库。

+0

AddressField是什么扩展? – masnun

+0

它是一个由私人开发者开发的类(https://github.com/furious-luke/django-address)。 – Spider

为什么不使用字段的可编辑属性? 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