Python Django-无法更新表单
我的模板在一个表单中有三列,它们分别工作。若我给联系人栏和男性栏输入,它将保存在我的数据库中。 所以基本上我只想更新男性作为联系人,男性和女性输入以相同的html形式出现。 我可以更新触点,但不包括公输入或母输入。 他们都在同一个页面。我想让他们分开工作,这样我可以更新他们 问题是,当我为项目提供输入时,它会被发布,而不是男性和女性的输入。 即使我在forms.py中包含了male类的contact1,表单也不会被提交Python Django-无法更新表单,python,django,forms,Python,Django,Forms,我的模板在一个表单中有三列,它们分别工作。若我给联系人栏和男性栏输入,它将保存在我的数据库中。 所以基本上我只想更新男性作为联系人,男性和女性输入以相同的html形式出现。 我可以更新触点,但不包括公输入或母输入。 他们都在同一个页面。我想让他们分开工作,这样我可以更新他们 问题是,当我为项目提供输入时,它会被发布,而不是男性和女性的输入。 即使我在forms.py中包含了male类的contact1,表单也不会被提交 from django.urls import path , includ
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')
]
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
add.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()
请先检查一下我刚才做的这个项目,它可以帮助您很多:
--转到项目树内的帖子
在这里,我将举一个简单的例子来说明它是如何工作的:
class Update_Posts(UpdateView):
form_class = Form_Change
model = MyPosts
template_name = 'form_page.html'
# Define a post method
def post(self, request, pk):
if self.request.user.admin_user or self.request.user.staff_user or self.request.user.active_user:
instance = get_object_or_404(MyPosts, pk=pk)
form = self.form_class(
self.request.POST, self.request.FILES or None, instance=instance)
if form.is_valid():
return self.form_valid(form)
else:
print('this data isn\'t Valid')
我是在基于函数的视图中练习的,所以我现在想在基于类的视图中练习。最好先练习基本功,祝你好运
Hay there k,
Since You are working with Django , there is a built in Function called (UpdateView),
class Update_Posts(UpdateView):
form_class = Form_Change
model = MyPosts
template_name = 'form_page.html'
# Define a post method
def post(self, request, pk):
if self.request.user.admin_user or self.request.user.staff_user or self.request.user.active_user:
instance = get_object_or_404(MyPosts, pk=pk)
form = self.form_class(
self.request.POST, self.request.FILES or None, instance=instance)
if form.is_valid():
return self.form_valid(form)
else:
print('this data isn\'t Valid')