Django 嵌套内联表单集示例项目教程
from django import forms
from django.forms import models as forms_models
# 假设有一个模型 `Book` 和 `Author`,以及一个多对多关系表 `Authorship`
class AuthorForm(forms_models.ModelForm):
class Meta:
model = Author
fields = '__all__'
class BookForm(forms_models.ModelForm):
authors = forms_models.ModelMultipleChoiceField(queryset=Author.objects.all())
class Meta:
model = Book
fields = ['title', 'authors']
def save(self, commit=True):
book = super().save(commit=commit)
book.authors.set(self.cleaned_data['authors'])
return book
# 在视图中使用嵌套的内联表单集
def create_book_view(request):
if request.method == 'POST':
book_form = BookForm(request.POST)
if book_form.is_valid():
book_form.save()
# 处理保存后的逻辑
return HttpResponse("Book and Authors saved.")
else:
book_form = BookForm()
# 渲染表单到模板
return render(request, 'create_book.html', {'book_form': book_form})
这个简单的示例展示了如何在Django中创建嵌套内联表单集。在这个例子中,我们有一个Book
和Author
模型,以及一个多对多关系表Authorship
。我们创建了两个ModelForms,AuthorForm
和BookForm
,其中BookForm
有一个多选字段来选择作者。在BookForm
的save
方法中,我们设置了图书和作者的多对多关系。最后,在视图中,我们处理提交的表单,并在有效时保存数据。
评论已关闭