@AntonioMargaretty

Пытаюсь отправить пользователя редактировать некий пост, который он написал, но вылазит ошибка?

Задача: При нажатии на кнопку "Изменить" к каждому посту отправлять пользователя на страницу редактирования поста, где он спокойно изменит его.

Класс во вьюхе, где я хотел написать работающий код:
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


Но при нажатии на нужную кнопку, выходит вот такая ошибка:
6471e560461ee384050179.png
Дополнение к ошибке:
6471e58fb483e992896847.png

Модель поста:
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)
]
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
Mi11er
@Mi11er
A human...
У вас же в ошибке все написано

Либо укажите model , к которой View относится, либо определите QS самостоятельно

class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView, CreateView, FormView):
    form_class = PostForm1
    template_name = 'main/post_form1.html'
    model = Post # Вот на отсутствие этого и  ругается
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы