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():
ложно, необходимо остановиться и вернуть ошибку. Вы переходите к обработке ингредиентов.