python - 类型对象“帖子”没有属性“过滤器”
问题描述
每次我尝试对帖子发表评论时,都会在帖子编号处收到 AttirbuteError。例如-'AttributeError at /post/54/',在它下面说'type object'Post'没有属性'filter''。然后它将我引导到我的 views.py 第 58 行,内容如下:post = self.get_object(Post)
. 它是我的 PostDetailClass 的一部分:
class PostDetailView(DetailView):
model = Post
form = CommentForm
def post(self, request, *args, **kwargs):
form = CommentForm(request.POST)
if form.is_valid():
post = self.get_object(Post)
form.instance. user = request.user
form.instance.post = post
reply_id = request.POST.get('comment_id')
comment_qs = None
if reply_id:
comment_qs = Comment.objects.get(id=reply_id)
reply = comment_qs, reply=None
form.save()
form.save_m2m()
return redirect(reverse("post", kwargs={
'content': Post.content
}))
网址.py
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from django.urls.conf import re_path
from django.views.generic.base import RedirectView
from .views import (
PostListView,
PostDetailView,
PostCreateView,
PostDeleteView,
UserPostListView,
TagIndexView,
about,
)
from . import views
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-
detail'),
path('user/<str:username>', UserPostListView.as_view(),
name='user-posts'),
path('post/new', PostCreateView.as_view(), name='post-create'),
path('about/', views.about, name='blog-about'),
path('map/', views.map, name='blog-map'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(),
name='post-delete'),
path('latest-posts/', views.latest_posts, name='latest-posts'),
path('focused/', views.focused, name='focused'),
path('snakegame/',views.snake_game, name='snake-game'),
re_path(r'^tag/(?P<slug>[-\w]*)/$',TagIndexView.as_view(),
name='tagged')
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
谁能指出我的代码有什么问题?谢谢你。
解决方案
问题来自传递Post
给self.get_object()
. get_object
接受一个查询集作为它的参数。一个查询集对象应该有.filter()
但没有Post
。
在这种情况下,您实际上不需要将任何内容传递给self.get_object
. 当您不向其传递任何内容时,查询集默认为self.get_queryset()
.
简而言之,将该行更改为:
post = self.get_object()
推荐阅读
- tensorflow - tensorflow-gpu 2.0 中的 CUDNN_STATUS_INTERNAL_ERROR
- android-constraintlayout - 在 ConstraintLayout 中从其中心位置垂直偏移图像
- c++ - 为什么 std::cout 打印旧值?
- git - Git - 如何在分支之间移动提交
- php - 无法使用 ajax 将值发布到 codeigniter 控制器
- java - 无法阻止wildfly创建日志文件
- javascript - 如何将焦点设置在 iframe 上的输入上
- python - 如何减少python中blender模块的导入时间
- javascript - 一行的列总和
- tensorflow - Keras VGG16 验证准确率低