我最近在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字段给用户,但更好地理解代码也是非常好的。
非常感谢,
答案 0 :(得分:2)
Django-fluent-comments使用Comment
中的默认Django django.contrib.comments
模型。您看到的FluentCommentsList
实际上是一个模板标记,可以从调用模板中获取上下文 - 如果您希望标记生效,则包括comment_list
或target_object_id
。
每个Comment
都包含ForeignKey
个用户。您收到错误的原因是您尝试访问user_id
上的字段,而不是user
上的字段。如果您的User
模型包含user_picture
字段,则以下内容应该有效:
coms = context['comment_list']
for c in coms:
print c.user.user_picture