Django - Rest Framework 多个模型

10

我开始使用Django Rest Framework,这是一个非常好的工具!

但我遇到了一些困难,虽然它很简单,但我总是无法弄清楚如何解决…… 我有两个模型,CustomUser和Order。在这里,一个CustomUser可以有0到多个Order。

我想生成一个以下格式的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)",但我不知道如何将它们合并成期望的结果。

非常感谢您的帮助。

最好的问候

2个回答

18
问题比较旧,可能已经有了答案,但类似这样的代码应该可以实现:
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。这样行得通吗? - Mohammed Shareef C
1
我在我的项目中尝试过这样的事情。但是我不知道如何编写views.py以获取这样的响应。你能否请发布答案? - Sahana Prabhakar

2

由于订单用户相关,因此您应该使用嵌套关系


链接已损坏。 - e4c5
1
似乎是指向 DRF v2 的链接 http://www.tomchristie.com/rest-framework-2-docs/api-guide/relations.html#nested-relationships - LoveGandhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接