Правильное использование сигнала post_save?

Моя цель состоит в следующем: Каждый раз, когда создается новый объект Note, я хочу, чтобы в Review вставлялась строка, которая соответствует Note через OnetoOne. Всякий раз, когда Note изменяется, я хочу каким-то образом изменить соответствующую запись в Review.

В настоящее время я реализовал это (частично) с помощью сигнала post_save. Хотя, мне кажется, что это немного халтурно, и мне интересно, есть ли более подходящий способ сделать это в Django? Или я делаю это правильно.

class Review(models.Model):
    note = models.OneToOneField(Note, on_delete=models.CASCADE, primary_key=True)
    easiness = models.DecimalField(decimal_places=3,max_digits=6)
    interval = models.IntegerField()
    repetitions = models.IntegerField()
    due_date = models.DateField(auto_now=False,auto_now_add=False)
    last_reviewed = models.DateField(auto_now=True,auto_now_add=False)

class User(AbstractUser):
    pass
# Create your models here.

@receiver(post_save, sender=Note)
def append_review(sender, instance, created, **kwargs):
    blank_review = {'easiness':0,'interval':0,'repetitions':0,'due_date':date.today(),'last_reviewed':date.today()}
    if created:
        Review.objects.create(note=instance, **blank_review)
    else:
        # modify existing entry instead...

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