2016-08-16 211 views
0

是否有可能在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

回答

0

爲什麼不使用字段的可編輯屬性? 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

相關問題