Django - создание формы, содержащей две связанные модели

Интересно, можно ли сделать форму на основе модели django, которая позволит создать две модели, одна из которых будет передаваться как внешний ключ второй.

пусть у нас будут такие модели:

class Book(models.Model):
    title = models.CharField(max_length=200)
    published = models.DateField()
    
    def __str__(self):
        return self.name

class Chapter(models.Model):
    name = models.CharField(max_length=200)
    number = models.IntegerField()
    book = models.ForeignKey(Book, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

Я хочу сделать представление, которое будет содержать BookForm и множество ChapterForms

что-то вроде:

Book.title = [input]
Book.published = [input]

и ниже (все в том же виде)

Chapter.name = [input]
Chapter.number = [input]
Chapter.name = [input]
Chapter.number = [input]
add more chapters

После отправки формы должна быть создана книга и соответствующие главы

Как я могу этого добиться?

До сих пор я просто делал два вида: одно для создания книги и второе для главы, которое получает id созданной книги как параметр в url. id в качестве параметра в url, но я хотел бы сделать это в одном представлении, чтобы пользователь мог создавать книги и главы одновременно

Никогда не должно быть необходимости в дубликате. Я думаю, что вы не хотите:

recipe = Recipe.objects.create(name=recipe_form.data['name'])

Вы должны получить рецепт, а не создавать новый.

Если вы сделаете это правильно, вам не нужно ничего делать с дубликатом после formset.save().

Также, если if recipe_form.is_valid(): ложно, необходимо остановиться и вернуть ошибку. Вы переходите к обработке ингредиентов.

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