我有两个模型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')
这样我就可以访问用户的所有项目列表。但是这里的字段项只返回'item id',我需要与用户相关的整个项目模型。我怎么才能得到它?
对于相关对象的自定义列表(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')