Есть ли способ проверить request.user против ManyToManyField? - PullRequest
0 голосов
/ 29 июня 2011

У меня небольшая проблема, и мне интересно, может ли кто-нибудь мне помочь. Я пытаюсь проверить, является ли request.user одним из пользователей в таблице отношений ManyToMany. Есть ли способ сделать это?

Пример:

Я хочу проверить, следует ли пользователь за бизнес-страницей, и если он есть, дайте ему возможность отменить ее и наоборот.

У меня есть:

followers = models.ManyToManyField(User, related_name="Followers", null=True, blank=True)

Просто интересно, есть ли способ проверить request.user.id по таблице подписчиков на этот конкретный идентификатор.

Спасибо всем.

Steve

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Это "джангоический" способ сделать это:

if page.followers.filter(id=request.user.id).exists():
   do_something()

Более "питонический" способ, который не рекомендуется , потому что он очень неэффективен, дБ:

if request_user in page.followers.all():
   do_something()

(позже загружаются данные всех пользователей в python, а первый использует запрос базы данных)

0 голосов
/ 29 июня 2011

вы легко сможете проверить

try:
    this_page = BusinessPages.objects.get(slug=slug)
except BusinessPage.DoesNotExist:
    raise Http404

if request.user in this_page.followers.all():
    ... 
...