首页 > 解决方案 > /blog/post/comment/update/18/ 处的 ModuleNotFoundError 没有名为“test-post-ecomon”的模块

问题描述

我的网站有一个博客部分,我做了一个 CommentUpdateView,在提交表单后它给了我这个错误

ModuleNotFoundError at /blog/post/comment/update/18/
No module named 'test-post-ecomon'

但我不明白为什么因为这篇文章存在并且我在我的联系人模型中实现了 get_absolute_url 并且它应该可以正常工作?当我创建新评论时,它可以工作。

看法

class CommentUpdateView(LoginRequiredMixin, UpdateView):
    model = Comment
    form_class = CommentUpdateForm
    template_name = 'blog/update_comment.html'

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(author=self.request.user)

模型

class Comment(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    reply = models.ForeignKey('self', on_delete=models.CASCADE, null=True, related_name='replies')
    content = models.TextField(_('Content'))
    posted_date = models.DateTimeField(_('Posted Date/Time'), auto_now_add=True)
    updated_date = models.DateTimeField(_('Updated Date/Time'), auto_now=True)

    def __str__(self):
        return f'{self.author.username} - {self.post.title}'

    def get_absolute_url(self):
        return reverse('post', self.post.slug)

网址

path('post/<slug:slug>/', PostDetailView.as_view(), name='post'),
path('post/comment/update/<int:pk>/', CommentUpdateView.as_view(), name='update-comment'),

标签: pythondjangoforms

解决方案


尝试像这样重写你的get_absolute_url

def get_absolute_url(request):
    return reverse('post', args=(self.post.slug, ))

PS您真的不想在更新视图中重新分配用户,因为它会降低性能而基本上什么都不做


推荐阅读