确定要为RelatedFields包含哪些字段

时间:2016-04-24 13:28:43

标签: django django-rest-framework

我已将User扩展为MyUser

然后我有一个ItemForeignKeyMyUser

在我的序列化程序中,我添加了这个:

class MyUserSerializer(serializers.HyperlinkedModelSerializer):
    items = serializers.HyperlinkedRelatedField(many=True, view_name='item-detail', read_only=True)

    class Meta:
        model = MyUser
        fields = (...., 'items')

如何确定项目中包含哪些字段,现在默认只包含U

    ....
    "url": "http://192.168.0.110:8000/users/2/",
    "items": [
        "http://192.168.0.110:8000/items/1/",
        "http://192.168.0.110:8000/items/2/"
    ]

我想说我想要包含该项目的名称以及其他一些字段?

1 个答案:

答案 0 :(得分:1)

我认为你需要的是Nested Relationships。为此,您需要为Item模型编写新的序列化程序并将其包含在MyUserSerializer中:

class MyUserSerializer(serializers.HyperlinkedModelSerializer):
    items = serializers.ItemSerializer(many=True)

    class Meta:
        model = MyUser
        fields = (...., 'items', ...)


class ItemSerializer(serializers.ModelSerializer):
    ....

    class Meta:
         model = Item
         fields = (....) # your fields

如果您还需要url项目MyUserSerializer,那么您可以使用ItemSerializer扩展其他HyperlinkedModelSerializer