簡體   English   中英

Django Rest Framework:ID為POST的對象

[英]Django Rest Framework: POST object with id

是否可以在發布新對象的同時指定其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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM