Django - сохранение одной модели во время сохранения другой модели - PullRequest
0 голосов
/ 02 февраля 2020

Мне нужно создать записи в модели Tabel после создания мод Vacation. У меня есть Сотрудник, который создает отпуск, и каждая дата из продолжительности отпуска должна go моделировать Табель.

    name = models.CharField('Name', max_length = 20) 
    last_name = models.CharField('Last name', max_length = 20) 

    def __str__(self):
        return self.last_name

class Vacation(models.Model):
    employee = models.ForeignKey(Employee, on_delete = models.SET_NULL, blank = True, null = True)
    vacation_type = models.ForeignKey(VacationType, on_delete = models.SET_NULL, blank = True, null = True)
    date_creation = models.DateTimeField(auto_now = True)
    start_date = models.DateField()
    end_date = models.DateField()
    duration = models.DurationField(default=timedelta)

class Tabel(models.Model):
    employee = models.ForeignKey(Employee, on_delete = models.SET_NULL, blank = True, null = True)
    date = models.DateField()
    day_type = models.ForeignKey(TabelType, on_delete = models.SET_NULL, blank = True, null = True)
    late_changes = models.BooleanField(default = False)

Я просто начинаю с Django. Что я могу использовать для обновления модели Tabel после создания отпуска? Заранее благодарю за любой совет!

1 Ответ

0 голосов
/ 02 февраля 2020

Как указано в комментарии, вы можете использовать Django post_save signal:

models.py или signal.py

from django.db.models.signals import post_save

@receiver(post_save, sender=Vacation)
def create_tabel(sender, instance, created, **kwargs):
    if created:
        Tabel.objects.create(employee=instance.employee)

Другой вариант - переопределить Vocation сохранить метод:

def save(self, *args, **kwargs):
    is_new = True if not self.id else False
    super(Book, self).save(*args, **kwargs)
    if is_new:
        Tabel.objects.create(employee=self.employee)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...