You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django REST Framework序列化反向关系并展示NFT完整数据

解决DRF中收藏接口返回NFT完整数据的问题

要让Favorites接口返回NFT的完整数据而非主键ID,可通过以下两种方式实现:

方法一:嵌套序列化器(推荐,灵活可控)

  1. 先为NFT模型创建专属序列化器:
class NFTSerializer(serializers.ModelSerializer):
    class Meta:
        model = NFT
        fields = "__all__"  # 也可指定具体字段,比如['address', 'owner_address', 'token_id', 'token_URI', 'name']
  1. 修改FavoritesSerializer,用NFTSerializer替代默认的外键ID序列化逻辑:
class FavoritesSerializer(serializers.ModelSerializer):
    # 用NFT序列化器处理nft字段,返回完整数据
    nft = NFTSerializer()

    class Meta:
        model = Favorites
        fields = "__all__"

方法二:使用depth参数(快速便捷)

如果希望自动展开所有一级关联模型(包括user和nft),可直接在FavoritesSerializer的Meta中添加depth=1:

class FavoritesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Favorites
        fields = "__all__"
        depth = 1  # 自动展开所有外键关联的一级模型数据

两种方法对比

  • 嵌套序列化器:可精准控制只展开指定关联模型(比如只展开nft、不展开user),还能自定义字段展示逻辑,灵活性更高。
  • depth参数:配置简单,一次性展开所有关联,但无法单独控制某个关联是否展开,适合需要同时展示多个关联数据的场景。

内容的提问来源于stack exchange,提问作者Liondancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:35:19