Как динамически добавлять данные в таблицу в django? - PullRequest
1 голос
/ 07 мая 2020

У меня есть две следующие модели в моем models.py.

class Book(models.Model):
    book_id = models.AutoField
    book_name = models.CharField(max_length=50)
    book_author = models.CharField(max_length=50)
    book_category = models.CharField(max_length=50)

class Author(models.Model):
    author_id = models.AutoField
    author_name = models.CharField(max_length=50)
    author_description = models.CharField(max_length=500)

Я хочу, чтобы всякий раз, когда я добавляю новую строку в таблицу Book, она автоматически вводится в таблицу Author (только author_id и author_name , author_description добавлю вручную) для каждого уникального автора. Как это сделать?

1 Ответ

1 голос
/ 07 мая 2020

Можно сделать по-другому. Предлагаю следующие способы:

  1. Перезаписать Save метод модели Book. (Используя метод Save)
  2. Отправить Signal в Author модель для создания объекта Author.

Теперь я реализую второй способ:

@receiver(post_save, sender=Book)
def create_author(sender, instance, created, **kwargs):
    if created:
        author = Author.objects.create(id=your_id,author_name=your_author_name,author_description=your_author_description)
        Book.objects.objects.filter(pk=instance.id).update(author=author)


@receiver(post_save, sender=Book)
def save_author(sender, instance, **kwargs):
    instance.author.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...