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】:
由于orders
与user
相关,你应该使用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中序列化三个具有多对多关系的模型