Задача: При нажатии на кнопку "Изменить" к каждому посту отправлять пользователя на страницу редактирования поста, где он спокойно изменит его.
Класс во вьюхе, где я хотел написать работающий код:
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView, CreateView, FormView):
form_class = PostForm1
template_name = 'main/post_form1.html'
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
return False
Но при нажатии на нужную кнопку, выходит вот такая ошибка:
Дополнение к ошибке:
Модель поста:
class Post(models.Model):
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField("Название ордера", max_length=120, help_text='Введите текст поста')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
А вот urls:
urlpatterns = [
path('', login_required(login_url='/login/')(PostListView.as_view()), name='home'),
path('user/<str:username>', login_required(login_url='/login/')(UserPostListView.as_view()), name='user-posts'),
path('post/<int:pk>/', login_required(login_url='/login/')(PostDetailView.as_view()), name='post-detail'),
path('post/new/1', PostCreateView1.as_view(), name='post-create'),
path('post/new/2', PostCreateView2.as_view(), name='post-create2'),
path('post/new/3', PostCreateView3.as_view(), name='post-create3'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/update/', PostUpdateView2.as_view(), name='post-update2'),
path('post/<int:pk>/update/', PostUpdateView3.as_view(), name='post-update3'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
# path('upload/', views.image_upload_view)
]