Ошибка значения: Поле 'id' ожидало число, но получило 'create'

Я в процессе создания поля изображения галереи в Django для моего проекта, но когда я пытаюсь получить доступ к url, я получаю ошибку Field 'id' expected a number but got 'create'.. А на postman я получаю { detail: "Method \"POST\" not allowed." }.

class Gallery(models.Model):
    SUBTLEPBR = "subtle"
    AMULET = "amulet" 
    F8THFULPBR = "f8thfulpbr" 

    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    screenshot_by = models.CharField(max_length=200, null=False, blank=False)
    image = WEBPField(
        verbose_name=('Image'),
        upload_to=image_folder,
        default="placeholder.png"
    )
    
    PACKS = [
        (SUBTLEPBR, 'SubtlePBR'),
        (AMULET, 'Amulet'),
        (F8THFULPBR, 'F8thfulPBR'),
    ]
    pack = models.CharField(max_length=10, choices=PACKS)

    def __str__(self):
        return "Screenshot by "+  self.screenshot_by + " | " + self.pack
@api_view(["POST"])
@permission_classes([IsAdminUser])
def createGalleryImage(request):
    user = request.user
    gallery = Gallery.objects.create(
        user = user,
        screenshot_by = "John Doe",
        pack = Gallery.SUBTLEPBR,
    )

    serializer = GallerySerializer(gallery, many=False)
    return Response(serializer.data)
path("gallery/create/", views.createGalleryImage, name="gallery-create"),

postman

Вывод, который должен произойти:

{
    "id": 51,
    "screenshot_by": "Person",
    "image": "/placeholder.png",
    "pack": "subtle",
    "user": 1
}

Это "выстрелит" неправильный вид. Действительно, если вы используете /gallery/create, он выстрелит getGalleryImage с create как pk.

Если первичные ключи являются целыми числами, вы можете ограничить их с помощью:

urlpatterns = [
    path('gallery/<int:pk>/', views.getGalleryImage, name='gallery-image'),
    path(
        'gallery/delete/<int:pk>/',
        views.deleteGalleryImage,
        name='gallery-delete',
    ),
    path('gallery/create/', views.createGalleryImage, name='gallery-create'),
    # …
]

Только если pk будет последовательностью цифр, например 1425, а не create.

Вернуться на верх