【发布时间】:2016-11-12 15:57:46
【问题描述】:
使用 django 和 django-rest-framework 实现以下 api 的正确方法是什么。首先是模型
型号
def ChatModel(models.Model):
users = models.ManyToManyField(User, through=ChatUser)
回应
获得这个模型时所需的响应,其中多对多关系通过嵌套序列化程序呈现:
[
{
"id": 1,
"title": "gossip",
"users": [
{
"id": 1,
"name": "George"
},
{
"id": 2,
"name": "Jerry"
}
]
}
]
请求是关键部分:让 api 接收主键列表并在后端创建用户 -> 聊天关系。
请求
{
"title": "gossip",
"users": [1,2]
}
那么我如何允许这样的请求创建具有多对多关系的对象。
编辑
我一直在尝试使用 ChatRequestSerializer 类来实现这一点,该类使用户字段类似于这样
users = serializers.ListField(child=serializers.PrimaryKeyRelatedField(many=True, queryset=User.objects.all()))
并通过覆盖序列化程序的create 方法来处理创建关系。这不起作用,因为它会引发错误:'ManyRelatedManager' 对象不可迭代
【问题讨论】:
-
这个问题更像是:我有this,我想要that。但是与我这样做的如何相关的主要部分丢失了。到现在为止你尝试了什么?
-
我已经编辑了我的问题以解释我到目前为止所做的事情
标签: python django rest django-rest-framework many-to-many