我不知道如何单独显示表单集。
我了解如何一次显示所有内容。 但是我尝试了一些模型字段名称,但是没有用。
#views
class UserEdit(generic.UpdateView):
model = User
form_class = forms.UserUpdateForm
template_name = 'accounts/accounts_edit.html'
success_url = reverse_lazy('accounts:edit')
def get_object(self):
return get_object_or_404(User, pk=self.request.user.user_id)
#forms
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = profile
fields = ('first_name','last_name','birthday')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
ProfileFormSet = inlineformset_factory(User,profile,form=ProfileUpdateForm,extra=0)
class UserUpdateForm(mixins.ModelFormWithFormSetMixin,forms.ModelForm):
#Userモデルにprofileモデルを入れる
formset_class = ProfileFormSet
class Meta:
model = User
fields = ('username','email',)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
#template
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.username.label_tag }}
{{ form.username }}
{{ form.email.label_tag }}
{{ form.email }}
{{ form.formset }}
<button type="submit">Submit</button>
</form>
我想指定和显示而不是使用formset一次显示的方法。
后记 Mixins是为数据验证和数据存储而创建的。
我想在模板中显示表单集显示的详细信息。 但是,我只知道如何一次显示它,例如{{form.formset}}。 理想情况下,我想像{{form.formset.first_name}}
一样单独显示它#mixins
class ModelFormWithFormSetMixin:
def __init__(self, *args, **kwargs):
super(ModelFormWithFormSetMixin, self).__init__(*args, **kwargs)
self.formset = self.formset_class(
instance=self.instance,
data=self.data if self.is_bound else None,
)
def is_valid(self):
return super(ModelFormWithFormSetMixin, self).is_valid() and self.formset.is_valid()
def save(self, commit=True):
saved_instance = super(ModelFormWithFormSetMixin, self).save(commit)
self.formset.save(commit)
return saved_instance
答案 0 :(得分:0)
表单集是一组表单,因此您必须在表单中循环{%for form.formset%}中的子表单{{subform.first_name}} {%endfor%} Dirkgroten在评论中告诉我。 谢谢。