模型中按用户过滤的方法

时间:2015-02-13 11:43:58

标签: python django

我的模特:

class Document(models.Model):
    title = models.CharField(_('title'), null=False, blank=False, max_length=250)
    description = models.TextField(_('description'), null=True, blank=True)
    is_favourite = my_method()

class FavouriteDocumentUser(models.Model):
    document = models.ForeignKey(Document)
    user = models.ForeignKey(CustomUser)

    class Meta:
        unique_together = ('document', 'user',)

我需要一个字段'is_favourite'如果在FavouriteDocumentUser中存在一行,其中包含文档的id和记录用户的id,则该字段为true。

所以问题是:如何在模型的方法中获取当前用户?

我正在将这些模型用于django rest框架。

1 个答案:

答案 0 :(得分:0)

你不能,因为Django ORM不知道Django身份验证。 当前用户可在request对象中使用,该对象仅适用于您的视图。您需要将request.user传递给模型方法。例如:

class Document(models.Model):
   ...

    def is_favourite(user):
        return self.favoritedocumentuser_set().filter(user=user).exists()

然后从视图中调用此方法:

def my_view(request):
    ...
    if mydocument.is_favorite(request.user):
        ...do something...