【问题标题】:Django - Rest Framework Multiple modelsDjango - Rest Framework 多个模型
【发布时间】: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)”,但我不知道如何将两者合并到预期结果中。

非常感谢您的帮助。

最好的问候

【问题讨论】:

    标签: python django json rest frameworks


    【解决方案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

    【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 2013-11-27
    • 2014-08-20
    • 2014-01-09
    • 2014-11-12
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多