【发布时间】:2020-07-21 09:15:16
【问题描述】:
我的模板在一种形式中包含三列,它们分别工作。如果我为联系人列和男性列提供输入,它将保存在我的数据库中。 所以基本上我只想更新男性作为联系人,男性和女性输入以相同的 html 形式存在。 我可以更新联系人,但男性或女性输入。 它们都在同一个页面中。我想让它们分开工作,以便我可以更新它们。
问题是,当我为它提供输入时,它会被发布,而不是男性和女性的输入。 即使我在forms.py中包含了男性类的contact1,表单也没有被提交。
from django.urls import path , include
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('info/', views.info, name='info'),
path('features/', views.features, name='features'),
path('add/', views.add, name='add'),
path('add/' ,views.success, name='success'),
path('update/<str:pk_test>/' ,views.update, name='update')
]
views.py
def update(request,pk_test):
template_name = 'update.html'
# if request.method =='POST':
# c_form = commentForm(request.POST,instance=contacts)
# if c_form.is_valid() :
# contact = c_form.save()
# messages.success(request, "Contact Updated")
# return redirect("success")
# else:
# c_form = commentForm()
# context = {
# 'c_form' : c_form,
# }
contact = Contact.objects.get(id=pk_test)
c_form = commentForm(instance=contact)
m_form = maleForm(instance=contact)
f_form = femaleForm(instance=contact)
if request.method =='POST':
c_form = commentForm(request.POST,instance=contact)
m_form = maleForm(request.POST,instance=contact)
f_form = femaleForm(request.POST,instance=contact)
if c_form.is_valid() and m_form.is_valid():
gender = c_form.cleaned_data.get('gender')
username= c_form.cleaned_data.get('name')
c_form.save()
m_form.save()
messages.success(request, f"Form Submitted: {username}")
return redirect("success")
else:
c_form = commentForm()
m_form = okForm()
f_form = femaleForm()
context = {
'c_form' : c_form,
'm_form' : m_form,
'f_form' : f_form,
'contact' : contact,
}
return render(request , template_name , context)
```
models.py
class Male(models.Model):
contact1 = models.ForeignKey(Contact, on_delete=models.CASCADE,null=True)
chest = models.CharField(max_length=30 , blank=True)
neck = models.CharField(max_length=30 , blank=True)
full_shoulder_width = models.CharField(max_length=30 , blank=True)
right_sleeve = models.CharField(max_length=30 , blank=True)
left_sleeve = models.CharField(max_length=30 , blank=True)
bicep = models.CharField(max_length=30 , blank=True)
def __str__(self):
return chest
添加.py
def add(request):
template_name = 'add.html'
c_form = commentForm()
m_form = maleForm()
f_form = femaleForm()
contact = Contact.objects.all()
if request.method =='POST':
c_form = commentForm(request.POST)
m_form = maleForm(request.POST)
f_form = femaleForm(request.POST)
if c_form.is_valid() and (m_form.is_valid() or f_form.is_valid()):
gender = c_form.cleaned_data.get('gender')
username= c_form.cleaned_data.get('name')
contact = c_form.save()
if gender == 'female':
female = f_form.save(commit=False)
female.contact2 = contact
female.save()
messages.success(request, f"Form Submitted: {username}")
return redirect("success")
else:
male = m_form.save(commit=False)
male.contact1 = contact
male.save()
messages.success(request, f"Form Submitted: {username}")
return redirect("success")
else:
c_form = commentForm()
m_form = maleForm()
【问题讨论】: