我有两个分别来自同一模型(CustomUser)的表格。我想要两个带有单独按钮的单独表单,以将EditProfile表单分解为同一页面上的两个表单。我创建了两个单独的表单,两个视图和两个URL。我还向表单添加了两个单独的操作,但是只能显示第一个表单。我尝试在操作中同时添加url名称和view函数的名称,但这没有用。
views.py:
def EditProfileView(request):
form = EditProfile()
if request.method == 'POST':
form = EditProfile(request.POST, instance =request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('edit_profile'))
else:
form = EditProfile(instance = request.user)
return render(request, 'edit_profile.html', {
'form': form,
})
def EditProfileDetailView(request):
form = EditProfileDetail()
if request.method == 'POST':
form = EditProfileDetail(request.POST, instance =request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('profile'))
else:
form = EditProfileDetail(instance = request.user)
return render(request, 'edit_profile.html', {
'form': form,
})
urls.py:
urlpatterns = [
path('profile/edit/', views.EditProfileView, name='edit_profile'),
path('profile/edit/', views.EditProfileDetailView,
name='edit_profile_detail'),
]
forms.py:
class EditProfile(forms.ModelForm):
class Meta:
model = CustomUser
fields =('diff_field', 'diff_field2',)
class EditProfileDetail(forms.ModelForm):
class Meta:
model = CustomUser
fields =('skill_area1_title', 'skill_area1',)
edit_profile.html:
<form class="form-group booking_form" method="post" action="{% url
'edit_profile' %}">
{% csrf_token %}
#form stuff
</form>
<form class="form-group booking_form" method="post" action="{% url
'edit_profile_detail' %}">
{% csrf_token %}
#form stuff
</form>
根据以下评论更新的视图
def EditProfileView(request):
form = EditProfile()
form_two =EditProfileDetail()
if request.method == 'POST':
form = EditProfile(request.POST, instance =request.user)
form_two = EditProfileDetail(request.POST, instance =request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('edit_profile'))
if form_two.is_valid():
form_two.save()
return HttpResponseRedirect(reverse('profile'))
else:
form = EditProfile(instance = request.user)
form_two = EditProfileDetail(instance = request.user)
return render(request, 'edit_profile.html', {
'form': form,
'form_two': form_two,
})
任何帮助表示感谢,谢谢!