Django Access, зарегистрированный в пользователе в Custom Manager

StackOverflow https://stackoverflow.com/questions/2273705

Вопрос

Я хочу получить доступ к в настоящее время в системе пользователя в пользовательском менеджере, которого я написал. Я хочу сделать это, чтобы я мог отфильтровать результаты, чтобы показать только объекты, к которым они имеют доступ.

Есть ли в любом случае, не пропустив его? Что -то похожее на то, как это работает в представлениях, где вы можете выполнять запрос. User.

Спасибо

Это было полезно?

Решение

Не пропуская его, лучший способ, который я видел, - это использовать промежуточное программное обеспечение (описанное в Этот вопрос Stackoverflow, Я скопирую/вставку для облегчения ссылки):

Промежуточное программное обеспечение:

try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local

_thread_locals = local()

def get_current_user():
    return getattr(_thread_locals, 'user', None)

class ThreadLocals(object):
    def process_request(self, request):
        _thread_locals.user = getattr(request, 'user', None)

Управляющий делами:

class UserContactManager(models.Manager):
    def get_query_set(self):
        return super(UserContactManager, self).get_query_set().filter(creator=get_current_user())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top