Django Rest Framework:带有 id 的 POST 对象



是否可以在指定其id而不是自动递增的同时发布一个新对象?这是一次性导入,之后将更正数据库 ID 序列。

class TestModelSerializer(serializers.ModelSerializer):
class Meta:
model = TestModel
fields = ('id', 'name')
class TestModelViewSet(viewsets.ModelViewSet):
queryset = TestModel.objects.all()
serializer_class = TestModelSerializer
import requests
def test_post(endpoint):
data = {
"id": 30,
"name": "Test",
}
r = requests.post(endpoint, data=data)
print(r.status_code, r.reason)
test_post('http://localhost:8000/api/test_model/30/')
>>> 405 Method Not Allowed
test_post('http://localhost:8000/api/test_model/')
>>> 201 Created

201 Created创建一个新对象,但按顺序使用下一个 id,而不是所需的 id。

我也试过r = requests.put('http://localhost:8000/api/test_model/30/', data=data)但得到404 Not Found

这可以工作,但我不确定,我相信 django-rest 正在从您的 django 模型中读取 id 是一个自动增量字段,因此不会使用提供的 id 创建。但是,如果您将其显式指定为整数字段,则可以工作。

class TestModelSerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
class Meta:
model = TestModel
fields = ('id', 'name')

相关内容

  • 没有找到相关文章

最新更新