Правильное использование сигнала 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...