Python 使用form.py编辑模型
有人能给我解释一下吗?如何更新代码,我可以在obj创建和编辑时使用表单(仅一个代码)?范例 model.py:Python 使用form.py编辑模型,python,django,Python,Django,有人能给我解释一下吗?如何更新代码,我可以在obj创建和编辑时使用表单(仅一个代码)?范例 model.py: class Car(models.Model): car = models.CharField('#', max_length=5) def __unicode__(self): return str(self.id) class AddCar(forms.Form): car = forms.CharField(label='#', max_
class Car(models.Model):
car = models.CharField('#', max_length=5)
def __unicode__(self):
return str(self.id)
class AddCar(forms.Form):
car = forms.CharField(label='#', max_length=5, required=True,
widget=forms.TextInput(attrs={'class':'', 'title': '#',
'placeholder': '#', 'required': 'true'}))
@csrf_protect
@login_required
def add_car(request):
if request.method == 'POST':
form = AddCar(request.POST)
if form.is_valid():
pass
else:
form = AddCar()
return render(request, 'add_car.html', {'form': form, })
forms.py:
class Car(models.Model):
car = models.CharField('#', max_length=5)
def __unicode__(self):
return str(self.id)
class AddCar(forms.Form):
car = forms.CharField(label='#', max_length=5, required=True,
widget=forms.TextInput(attrs={'class':'', 'title': '#',
'placeholder': '#', 'required': 'true'}))
@csrf_protect
@login_required
def add_car(request):
if request.method == 'POST':
form = AddCar(request.POST)
if form.is_valid():
pass
else:
form = AddCar()
return render(request, 'add_car.html', {'form': form, })
视图。py:
class Car(models.Model):
car = models.CharField('#', max_length=5)
def __unicode__(self):
return str(self.id)
class AddCar(forms.Form):
car = forms.CharField(label='#', max_length=5, required=True,
widget=forms.TextInput(attrs={'class':'', 'title': '#',
'placeholder': '#', 'required': 'true'}))
@csrf_protect
@login_required
def add_car(request):
if request.method == 'POST':
form = AddCar(request.POST)
if form.is_valid():
pass
else:
form = AddCar()
return render(request, 'add_car.html', {'form': form, })
所以,我需要创建一个新的url
url(r'^edit/(?P<car_id>\d+)/$', 'cars.views.edit_car', name='edit_car'),
下一步是什么?如何将AddCar
表单与car
中的值一起使用?如果用户更新表单中的信息,如何检查
谢谢
更新
在edit_car
I使用()
但是我有一个错误:
'Car'对象对于模板中的所有{form.field}
都没有属性'get'
。Car
可以作为实例
关键字参数传递给ModelForm
实例,即
AddCar(instance=car)
要检测更改,可以将AddCar
实例的is\u valid()
方法与cleaned\u data
字典结合使用。您必须按原样获取car
对象,用request.POST
值实例化AddCar
表单,然后比较所获取的car
和AddCar.cleaned\u数据之间的值
form = AddCar({'car': get_object_or_404(Car, pk=car_id,).name,})
没有ModelForm
和ModelForm
我不能使用小部件等。我有更多的代码,我没有那么多时间将其更改为ModelForm。您知道解决此问题的另一种方法吗?您可以使用model\u to_dict
(from)构造一个字典,然后将其传递到initial
关键字参数以AddCar
表单。