Элегантный способ добавить заметки пользователя в набор запросов статей в Django
Допустим, у меня есть такое отношение в Джанго.
Модель заметки используется для хранения заметок пользователя для данной статьи content_object (или любой другой модели). Смысл в том, чтобы добавить поле примечаний ко всем статьям для текущего зарегистрированного пользователя без создания метода, который добавит поле примечаний, например.
for article in article_list:
article.notes = Note.objects.get(author=self.request.user, content_object=article)
# this is bad
На данный момент я пытаюсь добавить примечание собственный менеджер + родовое отношение в статье.
Article.py
class Article(models.Model):
user = models.ForeignKey(User)
...
notes = generic.GenericRelation(Note)
Note.pyclass Note(models.Model):
author = models.ForeignKey(User)
...
objects = CustomManager()
class CustomManager(models.Manager):
def for_user(self, user):
return super(CustomManager, self).get_query_set().filter(author=user)
Эта идея может работать, но только для всех заметок, я не могу сделать это в шаблоне:(
template.html
{% for article in article_list %}
{{ article.content }}
{% for note in article.notes.for_user(user) %}
{{ note.content }}
{% endfor %}
{% endfor %}
<!-- where user is currently logged user !>
Я ищу элегантный способ "приклеить" заметки пользователя к статье queryset, есть ли что-нибудь, что может мне помочь?