Python 将表单集保存在UpdateView中
我有下面具有多对多关系的模型Python 将表单集保存在UpdateView中,python,django,django-forms,django-views,django-generic-views,Python,Django,Django Forms,Django Views,Django Generic Views,我有下面具有多对多关系的模型条目和含义。我需要创建一个更新表单/视图,以同时编辑条目和含义对象。我还必须能够在编辑条目时向对象添加更多含义对象。 我尝试使用UpdateView和modelformset\u factory如下 我可以看到表单,但是我的视图没有保存意思是更改。我有两个问题: 如何保存意思是更改 如何在此表单/视图中添加或删除意思为的对象 模型 形式 看法 模板 #edit.html {%csrf_令牌%} {{form.as_table}} {{means_formset.man
条目
和含义
。我需要创建一个更新表单/视图,以同时编辑条目
和含义
对象。我还必须能够在编辑条目时向对象添加更多含义
对象。
我尝试使用UpdateView
和modelformset\u factory
如下
我可以看到表单,但是我的视图没有保存意思是更改。我有两个问题:
如何保存意思是更改
如何在此表单/视图中添加或删除意思为的对象
模型
形式
看法
模板
#edit.html
{%csrf_令牌%}
{{form.as_table}}
{{means_formset.management_form}
{meansion\u formset%中的meansion\u form的百分比}
{{意思是{u form.as{u p}}
{%endfor%}
我解决了将post
方法添加到EntryUpdateView
类中的问题:
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = models.Meaning.objects.filter(entry=self.get_object())
formsets = forms.MeaningFormSet(self.request.POST, queryset=qs)
if form.is_valid():
for fs in formsets:
if fs.is_valid():
fs.save()
return self.form_valid(form)
return self.form_invalid(form)
我解决了将post
方法添加到EntryUpdateView
类中的问题:
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = models.Meaning.objects.filter(entry=self.get_object())
formsets = forms.MeaningFormSet(self.request.POST, queryset=qs)
if form.is_valid():
for fs in formsets:
if fs.is_valid():
fs.save()
return self.form_valid(form)
return self.form_invalid(form)
class EntryUpdateView(UpdateView):
model = models.Entry
form_class = forms.EntryForm
formset_class = forms.MeaningFormSet
template_name = 'edit.html'
def get_context_data(self, **kwargs):
context = super(EntryUpdateView, self).get_context_data(**kwargs)
qs = models.Meaning.objects.filter(entry=self.get_object())
formset = forms.MeaningFormSet(queryset=qs)
context['meaning_formset'] = formset
return context
# edit.html
<form action="" method="post">
{% csrf_token %}
{{ form.as_table }}
{{ meaning_formset.management_form }}
{% for meaning_form in meaning_formset %}
{{ meaning_form.as_p }}
<hr>
{% endfor %}
<input type="submit" value="Update"/>
</form>
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
qs = models.Meaning.objects.filter(entry=self.get_object())
formsets = forms.MeaningFormSet(self.request.POST, queryset=qs)
if form.is_valid():
for fs in formsets:
if fs.is_valid():
fs.save()
return self.form_valid(form)
return self.form_invalid(form)