Ошибка значения: Поле '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"),
Вывод, который должен произойти:
{
"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
.