Как реализовать edit-form с помощью Django formset?
Я реализовал django-форму с набором форм. Когда я создаю новый объект, все работает. Но столкнулся с проблемой при редактировании формы, когда я не изменяю данные формсета (только данные вне формсета). Формсет выдает ошибку: id Requeired. Если я помечаю поля набора форм для удаления, а затем добавляю новые поля, то это тоже работает. Пожалуйста, объясните мне, что происходит и как решить эту проблему. Спасибо! Мой набор форм:
IngredientsFormSet = forms.inlineformset_factory(
Recipe,
RecipeIngredientsDetails,
fields="__all__",
can_delete=True,
min_num=2,
max_num=50,
extra=0,
)
И мой вид-функция:
def recipe_edit(request, recipe_id=None):
if recipe_id:
recipe = get_object_or_404(Recipe, id=recipe_id)
else:
recipe = Recipe()
if request.method == "POST":
form = RecipeCreateForm(data=request.POST, files=request.FILES)
formset = IngredientsFormSet(data=request.POST,
prefix=INGREDIENT_FORMSET_PREFIX)
if form.is_valid() and formset.is_valid():
recipe = form.save(commit=False)
recipe.author_id = request.user.id
recipe.save()
form.save_m2m()
formset.instance = recipe
formset.save()
return redirect(reverse_lazy("index"))
context = {"form": form, "formset": formset}
return render(request, template_name="recipe-create.html",
context=context)
form = RecipeCreateForm(instance=recipe)
formset = IngredientsFormSet(
instance=recipe,
prefix=INGREDIENT_FORMSET_PREFIX,
)
context = {
"form": form,
"formset": formset,
}
return render(request, context=context, template_name="recipe-create.html")