Как заполнить модель B при сохранении модели A
У меня есть две модели, A и B соответственно. Я создал модельную форму для модели A, которую я использую при создании экземпляров модели A. Я хочу добиться того, чтобы при сохранении модели A автоматически создавался экземпляр модели B.
models.py
class A(models.Model):
member = models.ForeignKey(User, on_delete=models.CASCADE, default="")
book = models.ForeignKey(Books, on_delete=models.CASCADE, default="")
library_no = models.CharField(default="", max_length=255, blank=True)
staff_id = models.CharField(default="", max_length=255, blank=True)
application_date = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = " Borrow Book"
def __str__(self):
return (str(self.member)) + " " + "applied to borrow " + (str(self.book))
class B(models.Model):
application = models.ForeignKey(BorrowBook, on_delete=models.SET_NULL, default="", null=True)
approved = models.BooleanField()
approval_date = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = "Approved Lending"
def __str__(self):
return str(self.application)
Есть идеи, как я могу этого достичь.
Для этого вы можете использовать signals(post_save), создайте signals.py
файл (как рекомендует django docs) и импортируйте следующее:
from django.db.models.signals import post_save
from django.dispatch import receiver
# then write the function to implement it
@receiver(post_save, sender=A)
def create_b_instance(sender, instance, created, **kwargs):
if created:
B.objects.create(...) # do functionality here
Теперь всякий раз, когда создается отправитель (A), работает функция внутри def create_b_instance
.
Обратитесь к этому документу doc для получения более подробной информации.