Python 使用form.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_

有人能给我解释一下吗?如何更新代码,我可以在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_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
表单。