簡體   English   中英

如何在 django 中用博客文章標記評論?

[英]How to tag a comment with the blog post in django?

我是 Django 的新手,目前正在開發一個博客。

我正在嘗試使用 CreateView 模板為我的觀眾插入評論表單。 觀眾需要登錄才能輸入他們的評論。 他們的用戶名將被標記到相應博客的評論中,而無需指明任何內容。 沒有錯誤,但數據未按預期存儲。 評論被接受,但不會出現在博客上。 去檢查 django 管理,其中顯然只存儲了作者,但沒有存儲評論的博客文章。 下面是我存儲在 (views.py) 中的代碼。

class CommentCreate(LoginRequiredMixin,CreateView):
    model = Comment
    fields = ['comment','blog']
    template_name = 'catalog/blog_comment.html'

    def get_context_data(self, **kwargs):
        context = super(CommentCreate, self).get_context_data(**kwargs)
        context['blog'] = get_object_or_404(Blog, pk = self.kwargs['pk'])
        return context

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

    def get_success_url(self): 
        return reverse('blog-detail', kwargs={'pk': self.kwargs['pk'],})

模型博客和評論在單獨的文件(models.py)中定義如下

class Blog(models.Model):
    title = models.CharField(max_length=200)    
    blogger = models.ForeignKey('Blogger', on_delete=models.SET_NULL, 
null=True)  
    content = models.TextField(max_length=1000, help_text='Write some stuffs 
for your blog')
    post_date = models.DateField(default=date.today)

    class Meta:
        ordering = ['post_date',"title","blogger"]

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog-detail', args=[str(self.id)])


class Comment(models.Model):
    comment = models.TextField(max_length=1000, help_text='Comment on the 
 blog')
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    blog = models.ForeignKey("Blog", on_delete=models.SET_NULL, null=True)
    post_date = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-post_date']

    def __str__(self):
        return self.comment

任何建議表示贊賞。 謝謝你。

問題解決了。 原來我忘了將數據保存在 form_valid 中。 附加代碼如下所示。

class CommentCreate(LoginRequiredMixin,CreateView):
    model = Comment
    fields = ['comment','blog']
    template_name = 'catalog/blog_comment.html'

    def get_context_data(self, **kwargs):
        context = super(CommentCreate, self).get_context_data(**kwargs)
        context['blog'] = get_object_or_404(Blog, pk = self.kwargs['pk'])
        return context

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.blog = get_object_or_404(Blog, pk = self.kwargs['pk'])
        return super(CommentCreate, self).form_valid(form)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM