Skip to main content
 首页 » 编程设计

python之如何在 Django REST Framework 3 中进行模型批量插值

2025年05月04日28lexus

我有用户模型,一对用户之间的好友生成模型。尝试序列化特定用户的列表以实现类似的目的:

[{ 
 "id": 1, 
 "name": "Foo" 
 "is_friend": true 
}, 
{ 
 "id": 1, 
 "name": "Bar" 
"is_friend": false 
}] 

我通过应用程序在所有可能的地方使用 ModelSerializer,所以我想到的第一个解决方案是在用户模型上实现 is_friend 计算属性,并在序列化程序中创建只读属性,但只是想象下面的 SQL hell 。对于每个用户,都会有另一个 SQL 选择,这对我来说似乎根本不是足够好的解决方案。所以我想到了一些事情,比如让我的 friend ,让我想要比较关系的特定用户,并只使用 2 个 SQL 选择在 Python 端完成工作。我想知道在 DRF3 中最优雅的解决方案是什么?有没有做这些事情的模式?有任何想法吗?会很棒!谢谢你!

请您参考如下方法:

您应该能够嵌套序列化器来实现这一点。例如:

class RelatedFriendSerializer(serializers.ModelSerializer): 
    class Meta: 
        model = FriendModle 
        fields = ('id', '...') 
 
 
class UserSerializer(serializers.ModelSerializer): 
    relatedfriendserializer = RelatedFriendSerializer(read_only=False) 
    class Meta: 
        model = User 
        fields = ('id', 'relatedfriendserializer',) 

在您的模型定义中,User 和Friend 之间的相关名称应称为relatedfriendserializer