У меня есть приложение, которое я разрабатываю, у которого есть 2 типа пользователей (A & B), и у меня есть страница, на которую я хочу перенаправить пользователей, которые не прошли проверку подлинности и не имеют тип B. Тип пользователя установлен в реляционной базе данных,
Мои две таблицы в этой базе данных:
User - pk, etc...
Profile - pk, uid (user pk), account_type
Что я сделал до сих пор:
У меня уже естьдля проверки подлинности использовал @login_required
в моем views.py
документе.
Я могу отфильтровать содержимое, для которого pid установлен вручную: Profile.objects.filter(user__pk=1)
И получить текущий идентификатор пользователя с помощью request.user.id
С чем я борюсь
Я пытался создать условие, где я использую request.user.id
с фильтром, чтобы найти этого пользователя, а затем проверитьтип аккаунта.Я не уверен, как вытащить account_type
, и в этот момент мой код становится беспорядочным, и, вероятно, неэффективным.Я искал это, но все, что я нашел, используя ключевые слова, которые я здесь нашел, выявило другие проблемы, чем то, что я пытаюсь решить.
Отредактированная дополнительная информация
У меня здесь 2 приложения, 1 - accounts
, одно - listings
, страница, для которой я делаю, предназначена для публикации списка, который находится в приложении listing
;Я хочу, чтобы только один тип пользователя (B) мог публиковать его.
в учетных записях, у меня есть этот класс:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
location = models.CharField(max_length=30, blank=True)
account_type = models.CharField(max_length=30)
В приложении листинга я еще не создалсоответствующая модель, насколько я понимаю, эта фильтрация будет происходить в представлении.
В представлении, которое я делаю:
@login_required
def post(request):
current_user = request.user
if : #here is where I want to filter, but haven't been able to get it to work
else:
return redirect('index')