假设我在 Django 中有这样的关系。
Note 模型用于存储 content_object 文章(或任何其他模型)中给定的用户注释。重点是将注释字段添加到当前登录用户的所有文章中,而无需创建将添加注释字段的方法,例如。
for article in article_list:
article.notes = Note.objects.get(author=self.request.user, content_object=article)
# this is bad
现在我正在尝试在文章中添加注释自定义管理器 + 通用关系。
文章.py
class Article(models.Model):
user = models.ForeignKey(User)
...
notes = generic.GenericRelation(Note)
笔记.py
class 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)
这个想法可能有效,但仅适用于所有笔记,我不能在模板中这样做:(
模板.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 !>
我正在寻找一种优雅的方式将用户注释“粘合”到文章查询集,有什么可以帮助我的吗?