无法理解django-fluent-comments代码的工作原理

时间:2014-03-23 22:15:55

标签: django django-comments

我最近在django-fluent评论中花了一些时间。我知道一点django,但我完全被这个包的工作方式所困扰。

基本上,我不明白获取对象注释的实际查询的位置。

在函数“FluentCommentsList(node)”中,包含注释的查询集似乎来自第67行的此调用:

comment_list = context['comment_list']'

我不知道在哪里填充'comment_list'的实际查询。看起来models.py中的函数get_comments_for_model可能与此有关,但我试图将其评论出来,评论仍然会出现在页面上。

最后,我不明白外键与用户的关系是如何工作的。在数据库中,注释中的user_id是用户模型的外键,但是当我更改FluentCommentsList时:

class FluentCommentsList(Node):
    def render(self, context):
        coms = context['comment_list']
        for c in coms:
            print c.user_id.user_picture

这导致下面的错误,看起来应该是用户模型被解释为long。

'long' object has no attribute 'user_picture'

有人有机会解释发生了什么事吗?我真正想做的就是通过外键访问user_picture字段给用户,但更好地理解代码也是非常好的。

非常感谢,

1 个答案:

答案 0 :(得分:2)

Django-fluent-comments使用Comment中的默认Django django.contrib.comments模型。您看到的FluentCommentsList实际上是一个模板标记,可以从调用模板中获取上下文 - 如果您希望标记生效,则包括comment_listtarget_object_id

每个Comment都包含ForeignKey个用户。您收到错误的原因是您尝试访问user_id上的字段,而不是user上的字段。如果您的User模型包含user_picture字段,则以下内容应该有效:

coms = context['comment_list']
for c in coms:
    print c.user.user_picture