#python-3.x #django #django-models #django-views
#python-3.x #django #django-модели #django-представления
Вопрос:
Существует несколько моделей, связанных с пользовательской моделью:
class User(AbstractUser):
# Its fields
class Model_1(models.Model)
user = models.OneToOneField('User', on_delete=models.CASCADE)
# other fields
class Model_2(models.Model)
user = models.OneToOneField('User', on_delete=models.CASCADE)
# other fields
class Model_3(models.Model)
user = models.OneToOneField('User', on_delete=models.CASCADE)
# other fields
class Model_4(models.Model)
user = models.OneToOneField('User', on_delete=models.CASCADE)
# other fields
и в представлении:
def index(request):
# If the user is related to model one, do something
# If the user is related to model two, do something
# If the user is related to model three, do something
# If the user is related to model four, do something
# Otherwise return to the home page
После того, как пользователь отправит запрос на просмотр, как мне определить, к какой из этих моделей он принадлежит?
Заранее благодарю.
Ответ №1:
Просто проверьте наличие вашей модели в экземпляре пользователя
class Model_4(models.Model)
user = models.OneToOneField('User',
related_name='model_4',
on_delete=models.CASCADE)
def index(request):
if request.user.model_4 is not None:
pass # Do something
Комментарии:
1. Если при этом возникает ошибка AttributeError, вы всегда можете использовать
hasattr
orgetattr
с этим.