如何使用Django REST Framework序列化反向关系并展示NFT完整数据
解决DRF中收藏接口返回NFT完整数据的问题
要让Favorites接口返回NFT的完整数据而非主键ID,可通过以下两种方式实现:
方法一:嵌套序列化器(推荐,灵活可控)
- 先为NFT模型创建专属序列化器:
class NFTSerializer(serializers.ModelSerializer): class Meta: model = NFT fields = "__all__" # 也可指定具体字段,比如['address', 'owner_address', 'token_id', 'token_URI', 'name']
- 修改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
相关产品推荐
相关产品推荐

