为了账号安全,请及时绑定邮箱和手机立即绑定

序列化对象时不显示 DRF 外键字段

序列化对象时不显示 DRF 外键字段

慕婉清6462132 2023-10-06 16:40:43
我有几个模型来代表用户。用户有一个花园、一个个人资料和一个gardener_profile。序列化用户对象时,会显示花园和个人资料,但不会显示gardener_profile。它们都是一对一的关系。在我的 swagger 文档中,gardener_profile 被识别,但在响应对象中未被识别。这是序列化器:class WorkingHoursSerializer(serializers.ModelSerializer):    gardener_profile = serializers.StringRelatedField(read_only=True)    class Meta:        model = WorkingHours        fields = '__all__'class GardenSerializer(serializers.ModelSerializer):    user = serializers.PrimaryKeyRelatedField(read_only=False, queryset=GardreamUser.objects.all())    class Meta:        model = Garden        fields = ['id', 'url', 'grass', 'beds', 'terrace', 'tracks', 'entry', 'user']class GardenerProfileSerializer(serializers.ModelSerializer):    user = serializers.PrimaryKeyRelatedField(read_only=False, queryset=GardreamUser.objects.all())    working_hours = WorkingHoursSerializer(many=True)    class Meta:        model = GardenerProfile        fields = ['id', 'url', 'working_radius', 'salary', 'iban', 'contract', 'user', 'working_hours']    def create(self, validated_data):        working_hours_data = validated_data.pop('working_hours')        gardener_profile = GardenerProfile.objects.create(**validated_data)        for working_hour_data in working_hours_data:            WorkingHours.objects.create(gardener_profile=gardener_profile, **working_hour_data)        return gardener_profileclass UserProfileSerializer(serializers.ModelSerializer):    user = serializers.StringRelatedField(read_only=True)    class Meta:        model = UserProfile        fields = '__all__'class UserSerializer(serializers.HyperlinkedModelSerializer):    profile = UserProfileSerializer(required=True)    garden = GardenSerializer(read_only=True)    gardener_profile = GardenerProfileSerializer(read_only=True)    class Meta:        model = CustomUser        fields = ['id', 'url', 'username', 'email', 'first_name', 'last_name', 'password', 'groups', 'profile',                  'garden', 'gardener_profile']        extra_kwargs = {'password': {'write_only': True}}
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我找到了解决方案:添加related_name='gardener_profile'到 GardenerProfile 的用户字段



查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信