Я пишу веб-приложение django, которое моделирует приложение, в котором могут войти сотрудники больницы и пациенты. У пациентов, медсестер и врачей все разные разрешения, и модели должны хранить различную информацию. В настоящее время я пытаюсь создать модель профиля пользователя, которая содержит все общие поля, а затем создает отдельные модели для каждого типа сотрудников, каждый из которых имеет атрибут oneToOneField (UserProfile). Мне было интересно, как я могу определить, какой тип пользователя был зарегистрирован в моем файле views.py. Например, можно сделать что-то вроде:Несколько типов пользователей
if request.user.is_patient():
show patient form
elif request.user.is_doctor:
show doctor form
Вот что я имею в models.py до сих пор:
class BaseUser(models.Model):
user = models.OneToOneField(User)
username = models.CharField(max_length=30)
firstName = models.CharField(max_length=50)
middleName = models.CharField(max_length=50)
lastName = models.CharField(max_length=50)
sex = models.CharField(max_length=10)
address = models.CharField(max_length=200)
email = models.CharField(max_length=50)
phone = models.CharField(max_length=10)
User.profile = property(lambda u: BaseUser.objects.get_or_create(user=u)[0])
class PatientUser(models.Model):
user = models.OneToOneField(BaseUser)
existingConditions = models.TextField()
prescriptions = models.TextField()
Спасибо, я постараюсь это. – Stalfurion
Я пробовал использовать ваше предложение, но у меня есть исключение, у пользователя нет никакого базового пользователя> любая идея, почему это так? – Stalfurion
Имеет ли ваше использование связанный с базойзером экземпляр? – Alvaro