使用模型ID获取与完整相关的模型详细信息:Django REST

时间:2017-12-21 15:51:46

标签: django-models django-rest-framework django-serializer

我有两个模型User和Item。 模型项是

class Item
    owner = models.ForeignKey(User, related_name='items',null=True)

用户将拥有多个项目。用户序列化程序是

class UserSerializer(serializers.ModelSerializer):

class Meta:
model = User
    fields = ('id','username','items')

这样我就可以访问用户所有项目的列表。但是在这里,字段项只返回'项ID',我需要与用户相关的整个项目模型。我怎么能得到它?

1 个答案:

答案 0 :(得分:1)

对于相关对象的自定义列表(items),您可以使用SerializerMethodField。我更喜欢为Item对象编写另一个序列化程序,并使用它在此方法中进行序列化。

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item

class UserSerializer(serializers.ModelSerializer):
    items = serializers.SerializerMethodField()

    def get_items(self, obj):
        return ItemSerializer(obj.items, many=True).data

    class Meta:
        model = User
        fields = ('id','username','items')