Задать вопрос
@zagogulka

Как автоматически создавать запись в одной таблице, при создании записи в другой (Django models)?

Добрый день, у меня есть две таблицы в БД
Первая:
class Zakaz(models.Model):
    sl_date = models.DateTimeField('Дата создания заказа')
    sl_no = models.CharField(max_length=20, verbose_name='Название заказа')
    sl_zak = models.CharField(max_length=20, verbose_name='Номер заказа')
    sl_kol = models.IntegerField(verbose_name='Количество изделий в заказе')

    def __str__(self):
        return '%s - %s' % (self.sl_no, self.sl_zak)

    class Meta:
        verbose_name_plural = 'Заказы'


Вторая:
class ZakazSnab(models.Model):
    sn_date = models.DateTimeField('Дата создания заказа')
    sn_zak = models.CharField(max_length=20, verbose_name='Название заказа')
    sn_no = models.CharField(max_length=20, verbose_name='Номер заказа')
    sn_kol = models.IntegerField(verbose_name='Количество изделий в заказе')
    sn_manager = models.CharField(max_length=20, verbose_name='Ответственный менеджер', blank=True, null=True)

    def __str__(self):
        return '%s - %s' % (self.sn_no, self.sn_date)

    class Meta:
        verbose_name_plural = 'Снабженец, закрепленный за заказом'


Вопрос в следующем: как автоматически при создании объекта Zakaz, создавать объект ZakazSnab, с заполнеными соответствующими полями из Zakaz (Дата заказа, номер заказа, количество и т.п.)?
  • Вопрос задан
  • 835 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
from django.db.models.signals import post_save
from django.dispatch import receiver


# method for updating
@receiver(post_save, sender=Zakaz)
def update_stock(sender, instance, **kwargs):
    # instance - созданный объект, к которому можно обратится 
    # Здесь создавать объект

UPD: в первом комменте - детальный пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы