2
中的單個字段相關是的,我知道有很多關於DRF序列化關係的問題已經得到解答。但是,他們的非能幫助我或者我傾倒得到它...DRF與模型
我有以下型號:
class User(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=30)
...
class Person(models.Model):
id = models.IntegerField(primary_key=True)
person_id = models.IntegerField()
birthdate = models.DateTimeField(blank=True, null=True)
...
現在我想在User
這樣從Person
的birthdate
領域:
{
"id": 397,
"name": "name",
"birthdate": "2015-11-11T00:00:00Z",
...
}
所以我這樣做:
class UserSerializer(serializers.ModelSerializer):
birthdate = serializers.SerializerMethodField()
class Meta:
model = User
def get_birthdate(self, obj):
person = PersonSerializer(Person.objects.get(person_id=obj.pk)).data
return person['birthdate']
它WOR但是必須有更好的方法。我有多個領域想以這種方式聯繫,結果會是尷尬的代碼,所以請幫助我!
爲什麼'person_id'不是'ForeignKey(User)'? – dhke
我已經試過了。但是我在序列化程序中該做什麼? – toXel
'birthdate = DateTimeField(source =「person_set.birthdate」)'應該這樣做,其中'person_set'需要是外鍵的'related_name'。有關詳細信息,請參見[文檔](http://www.django-rest-framework.org/api-guide/fields/#source)。你可能也想使用'OneToOneField',因爲目前每個用戶可以有多個人。 – dhke