两种形式,两种视图,一页Django-仅显示一种形式

时间:2019-01-24 15:05:22

标签: python django django-forms

我有两个分别来自同一模型(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,
    })

任何帮助表示感谢,谢谢!

0 个答案:

没有答案