Установка значения поля в модели в качестве значения поля в другой модели в 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)```
    
    

Вместо того, чтобы создавать такую модель, решите сделать одно из решений:

  1. Наследуйте от User модели:

    class Landlord(User):
    
  2. Сделать универсальную модель пользователя с флагом, если это Landlord пользователь:

    class User(AbstractUser):
        ...
        is_landlord = models.BooleanField(default=False)
    

В варианте 2 просто везде, где нужно только Landlord вещи используйте if user.is_landlord: или в шаблонах: {% if user.is_landlord %} и т.д.

Вернуться на верх