0

问题是我无法在edit_vendor.html中显示记录在比较href plz giude的id之后我有views.py之类的人

def vendor(request,id):
    key = request.GET.get('id')
    obj = Vendor.objects.get(id = key)
    return  render_to_response('edit_vendor.html',{'obj': obj},context_instance=RequestContext(request))

模板

<a href ='/vendor/{{vendor.id}}/'> edit </a>

edit_vendor.html

{% for Vendor in obj %}
<tr>
<form action="/update/" method="get">
   Vendor Name:<input type ='text' name= 'name' value ={{Vendor.name}}></br>
   Address: <input type ='text' name= 'address' value =  {{Vendor.address}}></br>
   Contact:<input  type = 'text' name= 'contact' value =  {{Vendor.contact}}></br>
   Created Date <input  type ='text' name='date' value = {{Vendor.created_date}}></br>
                <input type='submit' name='Submit' value='update' />
</form>
</tr>
{% endfor%}
4

1 回答 1

0

您正在使用get()which 返回总是返回一个对象,而不是一个列表。

但是,让我们备份并修复您的视图。

  1. 如果您希望查询只获得 1 个对象,请使用 get_object_or_404 快捷方式。这很方便,因为它会自动获取并捕获有人试图获取不存在的供应商 ID 的情况。

因此,您的视图应如下所示:

from django.shortcuts import render_to_response, get_object_or_404

def vendor(request, id):
    vendor = get_object_or_404(Vendor, id=id)
    return  render_to_response('edit_vendor.html', {'vendor': vendor}, context_instance=RequestContext(request))

接下来要记住getORM 调用返回单个对象,而不是列表。所以这:

{% for Vendor in obj %}

… 是错的。

你可能只想做:

<tr>
    <form action="/update/" method="get">
        Vendor Name:<input type ='text' name= 'name' value ={{vendor.name}}></br>
        Address: <input type ='text' name= 'address' value =  {{vendor.address}}></br>
        Contact:<input  type = 'text' name= 'contact' value =  {{vendor.contact}}></br>
        Created Date <input  type ='text' name='date' value = {{vendor.created_date}}></br>
        <input type='submit' name='Submit' value='update' />
    </form>
</tr>
于 2013-02-26T09:55:58.897 回答