为了账号安全,请及时绑定邮箱和手机立即绑定

请问我这样设计django文章的二级评论是否合理?

请问我这样设计django文章的二级评论是否合理?

森林海 2019-02-25 09:28:08
没有过开发经验的新手,拜托各位大神指点一下,我应该怎么改进下面我下面这种二级评论的设计?如果描述的不够详细,我再补充。 ps: 我的思路,就是一篇文章和一级评论形成一对多的关系,然后一级评论和二级评论又形成一对多的关系。 models.py class BlogComment(models.Model): """这是一级评论""" user_name = models.CharField('Name', max_length=100) # 指定用户名 body = models.TextField('Content') # 评论的主体 # 将一级评论关联对应的文章 article = models.ForeignKey('Article', verbose_name='Article', on_delete=models.CASCADE) class SubComment(BlogComment): """这是二级评论,继承自一级评论,但是增加了一个parent_comment属性""" # 将二级评论关联对应的一级评论 parent_comment = models.ForeignKey('BlogComment', verbose_name='BlogComment', on_delete=models.CASCADE) froms.py中指定评论的表单 class BlogCommentForm(forms.ModelForm): """一级评论的表单""" class Meta: model = BlogComment # 指定一级评论的model fields = ['user_name', 'body'] widgets = { 'user_name': forms.TextInput(attrs={ 'required': 'required', }), 'body': forms.Textarea(attrs={ 'required': 'required', }), } class SubCommentForm(BlogCommentForm): """二级评论的表单,继承自一级评论的表单""" class Meta: model = SubComment # 制定二级评论的model fields = copy.deepcopy(BlogCommentForm.Meta.fields) widgets = copy.deepcopy(BlogCommentForm.Meta.widgets) views.py class CommentPostView(FormView): """一级评论视图层""" form_class = BlogCommentForm template_name = 'blog/article.html' def form_valid(self, form): # 保存表单到数据库 comment = form.save(commit=False) comment.save() return HttpResponseRedirect('/') def form_invalid(self, form): # ... 一些提示用户表单输入不合理的信息 class SubCommentView(CommentPostView): """二级评论视图层,继承与一级评论视图层""" # 覆盖form_class成二级评论的表单 form_class = SubCommentForm
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果评论只有2级,大体思路没有问题。
但是你要想,你的二级评论,也是可以被评论的。所以有可能会有三级,四级。。评论。
这样你的设计就会有问题。
这其实是一个比较经典的问题了吧. 不过要是我去设计,我会根据树模型去设计.

查看完整回答
反对 回复 2019-03-04
  • 3 回答
  • 0 关注
  • 602 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信