MiloNNe2
@MiloNNe2
Я канистра

Как заимствовать значение из одной модели в другую?

Мне надо заимствовать значение строки storage_number из этой модели
class Storage(models.Model):
    
    STORAGE_CATEGORY_CHOICES = (
     ('Винтовой компрессор', 'Винтовой компрессор'),
     ('Осушитель сжатого воздуха', 'Осушитель сжатого воздуха'),
    )
    
    STORAGE_IP_CHOICES = (
     ('23', '23'),
     ('54', '54'),
    )
    
    STORAGE_PRESSURE_CHOICES = (
     ('8', '8'),
     ('10', '10'),
     ('13', '13'),
    )
    
    STORAGE_DRIVE_UNIT_CHOICES = (
     ('Ременной', 'Ременной'),
     ('Прямой', 'Прямой'),
    )

    storage_name = models.CharField('Оборудование', max_length=30)
    storage_bar = models.CharField('Давление', max_length=12, choices=STORAGE_PRESSURE_CHOICES)
    storage_ip = models.CharField('IP', max_length=12, choices=STORAGE_IP_CHOICES)
    storage_category = models.CharField('Категория', max_length=50, choices=STORAGE_CATEGORY_CHOICES)
    storage_drive_unit = models.CharField('Привод', max_length=12, choices=STORAGE_DRIVE_UNIT_CHOICES)
    storage_performance = models.CharField('Производительность', max_length=12)
    storage_power = models.CharField('Мощность', max_length=12)
    storage_outlet_pipe_diameter = models.CharField('Диаметр выходной трубы', max_length=12)
    storage_dimensions = models.CharField('Габариты', max_length=15)
    storage_mass = models.CharField('Масса', max_length=12)
    storage_number = models.IntegerField('На складе')
    storage_reserv_number = models.IntegerField('Из них в резерве')
    storage_image = models.CharField('Изображение', max_length=255)

    def __str__(self):
        return str(self.storage_category + " " + self.storage_name + " (" + self.storage_bar + " бар) (IP " + self.storage_ip + ")")

    class Meta:
        unique_together = ('storage_name', 'storage_bar', 'storage_ip')
        verbose_name = 'Склад'
        verbose_name_plural = 'Склад'

Вот сюда в equipment_number
class Equipment(models.Model):
    equipment_client = models.ForeignKey(Clients, verbose_name='Клиент', on_delete=models.CASCADE, max_length=50)
    equipment_equipment = models.ForeignKey(Storage, verbose_name='Оборудование', on_delete=models.CASCADE, max_length=50)
    equipment_dealer = models.ForeignKey(User, verbose_name='Дилер', on_delete=models.CASCADE, max_length=50)
    equipment_number = models.IntegerField('Количество')
    equipment_createdate = models.DateField(verbose_name='Дата бронирования', default=(timezone.localtime(timezone.now()).strftime('%Y-%m-%d')), max_length=50)
    equipment_deletedate = models.DateField(verbose_name='Дата снятия брони', default=(timezone.localtime(timezone.now()+timedelta(days=7)).strftime('%Y-%m-%d')), max_length=50)

    def __str__(self):
        return self.equipment_dealer.username

    class Meta:
        unique_together = ('equipment_client', 'equipment_equipment')
        verbose_name = 'Оборудование'
        verbose_name_plural = 'Оборудование

Как это сделать
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
1. Делаете миграцию с созданием storage_number (или как там ее назовете...) у модели Equipment
2. Делаете миграцию с переносом данных поля из модели Storage в Equipment
3. Делаете миграцию с удалением поля storage_number из модели Storage
Все...

Если переносить не надо - то в каждом объекте модели Equipment оно уже есть в поле .equipment_equipment. storage_number

PS: А зачем имя модели дублировать в названии поля?
Имя объекта типа equipment.equipment_client более читаемо чем equipment.client ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы