有人可以解释以下内容吗?如何更新代码,我可以在obj创建和编辑时使用表单(只需一个代码)?实施例
model.py:
class Car(models.Model):
car = models.CharField('#', max_length=5)
def __unicode__(self):
return str(self.id)
forms.py:
class AddCar(forms.Form):
car = forms.CharField(label='#', max_length=5, required=True,
widget=forms.TextInput(attrs={'class':'', 'title': '#',
'placeholder': '#', 'required': 'true'}))
views.py:
@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(r'^edit/(?P<car_id>\d+)/$', 'cars.views.edit_car', name='edit_car'),
然后在观看次数:
@csrf_protect
@login_required
def edit_car(request, car_id):
car = get_object_or_404(Car, pk=car_id)
接下来是什么?如何将AddCar
表单与car
的值一起使用?如果用户更新表格中的信息,如何检查?
感谢。
更新
在edit_car
我使用(docs)
form = AddCar(car)
但是我在模板中的所有'Car' object has no attribute 'get'
都有错误:{{ form.field }}
。
答案 0 :(得分:1)
car
可以作为ModelForm
关键字参数传递给instance
实例,即
AddCar(instance=car)
要检测更改,您可以使用is_valid()
实例与AddCar
字典相结合的cleaned_data
方法。您必须按原样获取car
对象,使用AddCar
值实例化request.POST
表单,然后比较您已获取的car
和{之间的值{1}}。
答案 1 :(得分:1)
form = AddCar({'car': get_object_or_404(Car, pk=car_id,).name,})
没有ModelForm