【发布时间】:2021-01-10 21:20:09
【问题描述】:
型号:
class Person(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
def __str__(self):
return self.first_name + ' ' + self.last_name
class Gender(models.Model):
gender = models.CharField(max_length=1)
def __str__(self):
return self.gender
class Details(models.Model):
name = models.ForeignKey(Person, on_delete=models.CASCADE)
dob = models.DateField()
gender = models.ForeignKey(Gender, on_delete=models.DO_NOTHING)
序列化器:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = '__all__'
class GenderSerializer(serializers.ModelSerializer):
class Meta:
model = Gender
fields = '__all__'
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ['name', 'dob', 'gender']
目前我得到的输出低于输出:
[
{
"name": 1,
"dob": "1990-05-19",
"gender": 1
}
]
其中 id 1 代表 Person = "John Smith" 和 id 1 代表性别是 "Male" .我在stackoverflow上有几个解决方案,例如:
- How to get foreignkey field name insted of id in django rest framework
- Retrieving a Foreign Key value with django-rest-framework serializers
所有这些方法都有效,但是 Django Rest 框架将外键设置为只读,并且这些字段不再出现在 DRF HTML 表单中。我的问题是如何显示外键字段值而不是 id 确保 DRF HTML 表单仍然像以前一样显示这些字段
【问题讨论】:
标签: python django-rest-framework