Проблемы с пониманием того, как работает код django-fluent-comments
Я провел немного времени, копаясь в django-fluent-comments недавно. Я немного знаю django, но совершенно не знаю, как работает этот пакет.
По сути, я не понимаю, где делается фактический запрос для получения комментариев к объекту.
В функции ' FluentCommentsList (node) ' набор запросов, содержащий комментарии, появляется из этого вызова в строке 67:
comment_list = context['comment_list']'
Я понятия не имею, где сделан фактический запрос для заполнения 'comment_list'. Похоже, что функция get_comments_for_model в models.py может иметь к этому какое-то отношение, но я попытался закомментировать это, и комментарии все равно появляются на странице независимо от этого.
Наконец, я не понимаю, как работает отношение внешнего ключа к пользователю. В базе данных 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' object has no attribute 'user_picture'
Может, кто-нибудь объяснит, что происходит, пожалуйста? Все, что я на самом деле пытаюсь сделать, - это получить доступ к полю user_picture через внешний ключ для пользователя, но было бы также неплохо немного лучше понять код.
Большое спасибо,
1 ответ
Django-fluent-comments использует Django по умолчанию Comment
модель в 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