是否可以在发布新对象的同时指定其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
答案 0 :(得分:1)
这可能有效,但是我不确定,我相信django-rest正在从您的django模型中读取id为自动递增字段,因此无法使用提供的id创建。但是,如果您将其明确指定为整数字段,则可以使用。
class TestModelSerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
class Meta:
model = TestModel
fields = ('id', 'name')