优雅的方式将用户注释添加到Django中的文章查询集

时间:2014-05-20 10:08:08

标签: python django django-custom-manager

让我们说我在Django中有这样的关系。

enter image description here

注释模型用于存储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.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)

这个想法可能有用,但只适用于所有笔记,我不能在模板中这样做:(

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 !>

我正在寻找一种优雅的方式来粘合&#34;用户对文章查询集的说明,有什么可以帮助我吗?

0 个答案:

没有答案