gpt4 book ai didi

Django 休息框架 : POST on many to many

转载 作者:行者123 更新时间:2023-12-02 15:11:01 24 4
gpt4 key购买 nike

我有以下型号:

class A(models.Model): 
b = models.ManyToManyField(B)
name = model.CharField()

class B(models.Model):
name = model.CharField()

应用程序中的网址:

 url(
r'^A/(?P<pk>[a-f0-9-]+)/B/$',
AViewSet.as_view({
'get': 'list',
'post': 'create',
'put': 'partial_update',
}),
name='A-B',
),

应用程序中的序列化程序:

class ABSerializer(serializers.ModelSerializer):

class Meta:
model = A
extra_kwargs = {
'id': {'read_only': True},
}
fields = (
'b',
)

问题是,当我使用 url 在 A 应用程序上调用 POST 调用时:A/{idofA}/B 并发送 post 数据:

{
b : ["idofexistingB"]
}

我收到错误消息,指出 A 的必填字段未发送。但是,此设置适用于 PUT 调用。

PUT 调用的问题是,当我再次调用 PUT 调用时,它会用新数据覆盖 AB 关系字段中的现有数据,而不是简单地将第二个 API 调用的数据附加到第一个。

如何发布数据,以便能够将现有的 B 记录与 A 记录相关联?

最佳答案

我曾经用 PrimaryKeyRelatedField 在 django 中解决了 manytomany 到字段的问题。它假定字段的值以列表的形式出现。希望对您有所帮助。

class ABSerializer(serializers.ModelSerializer):
b = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

class Meta:
model = A
fields = ('name', 'b')


{'name': 'test', 'b': [1, 2]}

关于Django 休息框架 : POST on many to many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43934037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com