将一个序列化程序字段添加到另一个django-rest框架中



my序列化程序.py文件为

...
class RelativeSerializerSLC(serializers.ModelSerializer):
full_name = serializers.CharField(source="user.full_name")
rtl_full_name = serializers.CharField(source="user.rtl_full_name")
gender = serializers.CharField(source="user.gender")
phone = serializers.CharField(source="user.phone")
email = serializers.CharField(source="user.email")
avatar = serializers.CharField(source="user.avatar")
date_of_birth = serializers.CharField(source="user.date_of_birth")
class Meta:
model = Relative
fields = ("full_name", "rtl_full_name", "gender", "phone", "email", "avatar", "date_of_birth", "blood_group", "rel")
read_only_fields = ["patient"]

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = "id", "full_name", "rtl_full_name", "gender", "phone", "email", "date_of_birth", "avatar"

在那里,我正在创建其他序列化程序字段(userSerializer(,并添加到我的RelativeSerializer中。对我来说,这似乎很糟糕,我不知道。有没有更好的选择,比如用一个序列化程序字段代替另一个。

谢谢,DRF新手:(

也许可以试试这个:

class RelativeSerializerSLC(serializers.ModelSerializer):
users = UserSerializer(read_only=True)
class Meta: 
model = Relative
fields = ("full_name", "rtl_full_name", "gender", "phone", "email", "avatar", 
"date_of_birth", "blood_group", "rel")
read_only_fields = ["patient"]

并将UserSerializer类放在relativeSerizer的顶部。如果有效,请告诉我。我没有看到你的模型字段,所以可能没有。

请在此处查看嵌套序列化程序https://www.django-rest-framework.org/api-guide/relations/#nested-关系

最新更新