Установка значения поля в модели в качестве значения поля в другой модели в django
У меня есть два поля модели, одно из которых является моделью пользователя, а другое - моделью арендодателя. Я хочу, чтобы имя_пользователя и фамилия_пользователя из модели пользователя сохранялись также в модели арендодателя.
Это представление моей модели
pass
class User(AbstractUser):
is_customer = models.BooleanField(default=False)
is_employee = models.BooleanField(default=False)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
nin = models.IntegerField(unique = True , null=True)
avatar = models.ImageField(null= True, default="avatar.svg")
objects = UserManager()
class Landlord(models.Model):
user = models.OneToOneField(User, null= True, on_delete=models.CASCADE)
first_name = models.CharField(max_length=200, null=True)
last_name = models.CharField(max_length=200, null=True)
email = models.EmailField(unique = True , null=True)
bio = models.TextField(null=True)
nin = models.IntegerField(unique = True , null=True)
avatar = models.ImageField(null= True, default="avatar.svg")
USERNAME_FIELD = 'email'
REQUIRED_FIELDS= []
objects = User()
def __str__(self):
return str(self.user)```
Вместо того, чтобы создавать такую модель, решите сделать одно из решений:
Наследуйте от
User
модели:class Landlord(User):
Сделать универсальную модель пользователя с флагом, если это
Landlord
пользователь:class User(AbstractUser): ... is_landlord = models.BooleanField(default=False)
В варианте 2 просто везде, где нужно только Landlord
вещи используйте if user.is_landlord:
или в шаблонах: {% if user.is_landlord %}
и т.д.