我有幾個模型來代表用戶。用戶有一個花園、一個個人資料和一個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}}
序列化對象時不顯示 DRF 外鍵字段
慕婉清6462132
2023-10-06 16:40:43