В PostUpdateView отсутствует QuerySet. Определите PostUpdateView.model, PostUpdateView.queryset или переопределите PostUpdateView.get_queryset()
я пытаюсь отредактировать ответ (сообщение), сделанный пользователем на сайте, но при нажатии кнопки редактирования вместо того, чтобы перевести меня на страницу для редактирования, он выдает мне эту ошибку:
В PostUpdateView отсутствует QuerySet. Определите PostUpdateView.model, PostUpdateView.queryset или переопределите PostUpdateView.get_queryset().
urls.py:
path('boards/<int:board_id>/topics/<int:topic_id>/posts/<int:post_id>/edit/', views.PostUpdateView.as_view(), name='edit_post'),
views.py: мое приложение называется firstapp
from os import name
from django.db.models.base import Model
from django.shortcuts import render,redirect,get_object_or_404
from django.http import HttpResponse, response
from firstapp.models import Board
from django.contrib.auth.models import User
from firstapp.models import Topic,Post
from django.views.generic import UpdateView
from django.utils import timezone
class PostUpdateView(UpdateView):
Model = Post
fields = ('message',)
template_name = 'edit_post.html'
pk_url_kwarg = 'post_id'
context_object_name = 'post'
def form_valid(self, form):
post = form.save(commit=False)
post.updated_by = self.request.user
post.updated_dt = timezone.now()
post.save()
return redirect ('topic_posts',board_id=post.topic.board.pk,topic_id=post.topic.pk)
models.py:
class Board(models.Model):
name = models.CharField(max_length=50,unique=True)
description = models.CharField(max_length=150)
def __str__(self):
return self.name
def get_posts_count(self):
return Post.objects.filter(Topic__board=self).count()
def get_last_post(self):
return Post.objects.filter(Topic__board=self).order_by('-created_dt').first()
class Topic(models.Model):
subject = models.CharField(max_length=255)
board = models.ForeignKey(Board,related_name='topics',on_delete=models.CASCADE)
created_by = models.ForeignKey(User,related_name='topics',on_delete=models.CASCADE)
created_dt = models.DateTimeField(auto_now_add=True)
views = models.PositiveIntegerField(default=0)
updated_by = models.ForeignKey(User,null=True,related_name='+',on_delete=models.CASCADE)
updated_dt = models.DateTimeField(null=True)
def __str__(self):
return self.subject
class Post(models.Model):
message = models.TextField(max_length=4000)
Topic = models.ForeignKey(Topic,related_name='posts',on_delete=models.CASCADE)
created_by = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
created_dt = models.DateTimeField(auto_now_add=True)
updated_by = models.ForeignKey(User,null=True,related_name='+',on_delete=models.CASCADE)
updated_dt = models.DateTimeField(null=True)
def __str__(self):
truncated_message= Truncator(self.message)
return truncated_message.chars(30)
edit_post.html:
{% extends 'base.html' %}
{% load widget_tweaks %}
{% block title %} edit Post {% endblock %}
{% block breadcrumb %}
<li><a href=" {% url 'home' %}">boards</a></li>
<li><a href=" {% url 'board_topic' post.topic.board.pk %} ">{{post.topic.board.name}}</a></li>
<li>{{board.description}}</li>
<li>edit Post</li>
{% endblock %}
{% block content %}
<form method="POST" novalidate>
{% csrf_token %}
{% include 'includes/form.html'%}
<button type="submit">Save changes</button>
</form>
{% endblock %}