2016-12-28 44 views
0

我创建了一个表单来创建一个客户端,另一个来修改它,但问题是修改表单不会带来数据库的信息。django从数据库中提取数据进行编辑

带一个没有数据字段的基本表单。

观点:

def cliente_update(request, id=None): 
    queryset = get_object_or_404(Cliente, id=id) 
    if request.method == 'POST': 
     form = ClienteForm(request.POST or None, instance=instance) 
     if form.is_valid(): 
      instance = form.save(commit=False) 
      instance.save() 
      # return HttpResponseRedirect(instance.get_absolute_url()) 
    else: 
     form = ClienteForm() 
    context = { 
     "titulo": "Editar informacion del Cliente", 
     "queryset": queryset, 
     "form": form, 
    } 
    return render(request, "clientes/form.html", context) 
+0

** ClienteForm **的代码在哪里。请分享你的forms.py。 –

回答

2

您需要通过instance参数来传递你的Cliente对象在你的ModelForm在else块。

def cliente_update(request, id=None): 
    instance = get_object_or_404(Cliente, id=id) # renamed from queryset to instance 
    if request.method == 'POST': 
     form = ClienteForm(request.POST or None, instance=instance) 
     if form.is_valid(): 
      instance = form.save(commit=False) 
      instance.save() 
      # return HttpResponseRedirect(instance.get_absolute_url()) 
    else: 
     form = ClienteForm(instance=instance) 

    context = { 
      "titulo": "Editar informacion del Cliente", 
      "form": form, 
     } 
    return render(request, "clientes/form.html", context) 
+1

该实例看起来在名为变量的非常容易混淆的变量queryset中,该变量肯定应该重命名。 –

+0

我同意,重命名变量。 – ruddra