请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多APP评论的问题:{% get_comment_form for article as form %}

三个问题:

1、评论时,是根据主键object_pk进行评论与文章的关联。
{% get_comment_form for article as form %} 中表示关联到article这个应用。
如果有另一个应用news,使用的同一个模板,怎么在模板中把article变成news?

2、我在试验时发现,对article应用中文章进行评论,若 news应用中有相同object_pk值的文章,会把article应用中文章的评论显示出来。这种相同object_pk值的情况怎么解决?

3、怎么自定义样式,老师可否提示一下。

正在回答 回答被采纳积分+3

2回答

Jack 2019-04-28 17:03:32

你要评论某一条动态,前端就改成

{% get_comment_form for news as form %}

前端用了news,那么后端需要返回news到上下文

class DetailArticleView(LoginRequiredMixin, DetailView):
   """文章详情"""
   model = Article
   template_name = 'articles/article_detail.html'
   
   def get_context_data(self, **kwargs):
       context = super(DetailArticleView, self).get_context_data()
       context['news'] = News.objects.get(pk=1)

50个app...牛逼的项目啊,要增加评论模块的通用性吧,那本章讲的方法不太合适,最好再写个comments应用,写表单和模型类,可以使用通用关联GenericRelation把评论模块变得通用,其它任何应用都能关联到comments模型类,相关知识在第八章讲。想用django_comments实现的话研究下Generic comment moderation,也是实现让任意app都能评论。

form1和form2就是不同的表单,在同一个模板文件里面,动态下面有评论框,文章下面也有评论框


0 回复 有任何疑惑可以回复我~
  • 提问者 sofeng #1
    谢谢,详细的回答。后面说的方法超出我能力了。如果课程是有的讲就完美了。^_^
    回复 有任何疑惑可以回复我~ 2019-04-28 22:32:03
Jack 2019-04-28 15:44:06

不错,非常认真的问题。

  1. {% get_comment_form for article as form %}中的artilce来自于视图DetailArticleView返回的上下文,你要换成news那后端就要返回news的对象(通过模型类获取某一条动态)

  2. 我理解应该是继续第一个问题来的,如果使用同一个模板,要给不同的APP评论,当主键使用ORM默认的id时,object_pk值很可能相同,都换成uuid.uuid4就不会了。不过object_pk值相同也没关系,{% get_comment_form for news as form1 %}{% get_comment_form for article as form2 %}是针对的2个不同对象,在视图返回上下文的时候区分开,前端不要写到同一个form里面

  3. 自定义样式可以参考一下官网文档,在你写到的模板里面选择需要的filed,写样式就行了

0 回复 有任何疑惑可以回复我~
  • 提问者 sofeng #1
    谢谢老师的回答。
    问题一;你说的我也想过,但是没有搞定,能不能给点代码?
    第二个,我不是太明白,我是在改造手头的项目:有50个app,想增加能用性。form1和form2能否说的再明白点
    回复 有任何疑惑可以回复我~ 2019-04-28 16:37:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信