Django - Rest Framework 多个模型

Posted

技术标签:

【中文标题】Django - Rest Framework 多个模型【英文标题】:Django - Rest Framework Multiple models 【发布时间】:2013-11-11 14:40:23 【问题描述】:

我开始使用 Django Rest Framework,它是一个很棒的工具!

我实际上遇到了一些简单的事情,但不知道该怎么做……我有两个模型,CustomUser 和 Order。在这里,一个 CustomUser 有 0 到多个 Orders。

我想生成一个 JSON HTTPResponse 格式如下:


"user": 
    "city": "XXX", 
    "firstName": "XXX", 
    "zip": "XXX", 
    "taxNumber": "XXX", 
    "lastName": "XXX", 
    "street": "XXX", 
    "country": "XXX", 
    "email": "XXX", 
"orders": [
        "id": "XXX",
        "plan": "XXX",
        "date": "XXX",
        "price": "XXX"
    ]

我的用户已经在会话(请求)中,我使用以下行获取所需的订单:

# 2. Load user's orders
orders = Order.objects.filter(user=request.user)

我创建了两个序列化程序“OrderSerializer(serializers.ModelSerializer)”和“CustomUserSerializer(serializers.ModelSerializer)”,但我不知道如何将两者合并到预期结果中。

非常感谢您的帮助。

最好的问候

【问题讨论】:

【参考方案1】:

这个问题很老,所以它可能已经回答了,但这样的事情应该可以工作:

class OrderSerializer(serializers.ModelSerializer)
    class Meta:
        model = Order

class UserSerializer(serializers.ModelSerializer)
    orders = OrderSerializer(many = True)
    class Meta:
        model = user
        fields = ('city', 'firstName', 'zip', 'taxNumber', 'lastName', 'street', 'country', 'email', 'orders')

谢谢,

SS

【讨论】:

仍然,如何使用这个序列化程序? userializer = UserSerializer( Order.objects.get(pk=1), User.objects.filter(is_active=True) ) print userializer.data。这行得通吗? 在我的项目中尝试过这样的事情。但我不知道如何为这样的响应编写views.py。你能发布这个答案吗?【参考方案2】:

由于ordersuser相关,你应该使用Nested relationships。

【讨论】:

链接失效 似乎是 DRF v2 tomchristie.com/rest-framework-2-docs/api-guide/…的链接

以上是关于Django - Rest Framework 多个模型的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Rest Framework 中序列化多对多中间表

Django Rest Framework(多对多字段上的 GET 过滤器)

如何在Django Rest Framework中序列化三个具有多对多关系的模型

如何使用 Django Rest Framework 向 ManyToMany 字段添加数据?

django rest framework 序列化组件总结

Django Rest Framework 中的嵌套序列化程序“通过模型”