2015-02-13 7 views
0

Моя модель:метод в модели, фильтр пользователя

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 строку с идентификатором документа и идентификатор зарегистрированного пользователя.

Таким образом, проблема заключается в следующем: как я могу получить текущего пользователя в методе модели?

Я использую эти модели в каркасе отдыха django.

ответ

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... 
Смежные вопросы