2013-12-19 3 views
-1

Я пытаюсь отфильтровать ниже модель текущего пользователя, но я не могу понять, что это правильно. Я думаю, что это простое решение, но все, что я пытаюсь, не удается. Это не мой AUTH_PROFILE_MODULE. Я просто хочу, чтобы зарегистрированный в настоящее время пользователь мог отфильтровать все свои предпочтительные организации.Проверка подлинности Django: запрос текущего пользователя от внешнего ключа

class UserOrgConnections(models.Model): 
    user = models.ForeignKey(User) 
    orgs = models.ManyToManyField(Organizations) 
+0

Что именно не удается? Есть сообщения об ошибке? –

+0

Что написано работает. Я просто не могу понять, как написать запрос, который я хочу. Я могу попробовать несколько разных вещей и показать некоторые сообщения об ошибках и попытаться, но я думаю, что ответ на мой вопрос должен быть простым для даже слегка опытного разработчика (которого я не знаю). Все, что я нахожу в поисках, предполагает, что вы будете вытаскивать переменную из AUTH_PROFILE_MODULE, а это не так. Мне просто сложно написать запрос. Если бы я сделал что-то вроде этого \t \t 'county = user.county.all()', но это не так. –

+0

Я должен сказать: «orgs = user.orgs.all() –

ответ

0

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

В вашем представлении вы можете получить доступ к текущему пользователю через переменную запроса, например: request.user.

Вот самый простой способ получить все orgs значения вошедшего в систему пользователя:

user = request.user 
userorgs = UserOrgConnections.objects.filter(user = user) 
# at this point, you have all instances of UserOrgConnections 
# for which the current user is the user value 

print userorgs.values('orgs')  # as ValuesQuerySet 
print [x.orgs for x in userorgs] # as Python list 

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

+0

Это прекрасно! Как мне получить свое «org_name» для показа в списке, а не в первичном ключе - если вы не возражаете? –

+0

Если имя поля в модели 'Организации' является' org_name', тогда вы будете делать 'print [x.orgs.org_name для x в userorgs]'. В этом случае значения 'orgs' являются экземплярами другой модели, поэтому к их атрибутам можно получить доступ так же, как вы получаете доступ к значениям экземпляра' UserOrgConnections'. Дайте мне знать, если это работает так, как вы этого хотели. – sgarza62

+0

Я чувствую себя глупо, потому что не знаю, как использовать последнюю рекомендацию. Мне действительно нужно принять приведенные результаты и фильтровать их в несколько разных запросов. Хотя ваша рекомендация может делать именно то, о чем я прошу, я не знаю, как назначить этот оператор печати переменной, которую я могу затем фильтровать для создания нескольких разных списков. Например, когда я закончил, я должен иметь возможность фильтровать его, используя утверждения, подобные приведенным ниже. '\t newspolitics = MyNews.objects.filter (news_orgs = userorgs) .filter (news_orgs__org_type__pk = 5) .order_by (' - date ')' –

Смежные вопросы