Обратные аргументы '(8, '')' не найдены - как передать slug
Я настраиваю сжатие изображений.
def compress(image):
im = Image.open(image)
# create a BytesIO object
im_io = BytesIO()
#resize image
im = im.convert("RGB")
im = im.save(im_io,'JPEG', quality=70, optimize=True)
# create a django-friendly Files object
new_image = File(im_io, name=image.name)
return new_image
class Post(models.Model):
slug = models.SlugField(max_length=100, allow_unicode=True, blank=True)
image = models.ImageField(storage=PublicMediaStorage(), upload_to=path_and_rename, validators=[validate_image])
def save(self, *args, **kwargs):
#image compression start
if self.image:
# call the compress function
new_image = compress(self.image)
# set self.image to new_image
self.image = new_image
#image compression end
super(Post,self).save(*args, **kwargs)
Когда пользователь отправляет форму, я получаю эту ошибку
Reverse for 'post-detail' with arguments '(8, '')' not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/(?P<slug>[-a-zA-Z0-9_]+)/$']
Я полагаю, что ошибка вызвана этой строкой super(Post,self).save(*args, **kwargs), поскольку не передается slug, однако я не могу понять, как передать slug.
урлы
path('', views.home, name='blog-home'),
path('user/<str:pk_user>/', views.UsersCarsPosts, name='user-posts'),
path('post/new/', views.createPostView, name='post-create'),
path('post/<int:pk>/<slug:slug>/', views.DetailPostView, name='post-detail'),
path('post/<int:pk>/<slug:slug>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/<slug:slug>/delete/', PostDeleteView.as_view(), name='post-delete'),
(?P<slug>[-a-zA-Z0-9_]+ означает, что slug должен быть строкой из одного или нескольких символов. Однако вы передаете ''. Вам нужно выяснить, почему slug пустой.