2013-02-26 51 views
0

该问题的ID进行比较后显示从数据库记录是IM不能从HREF 比较ID之后以显示edit_vendor.html记录PLZ giude有人 我有views.py就像我怎么能与HREF

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%} 
+0

尝试'OBJ = Vendor.objects.get(ID = ID)',而不是当前'OBJ = Vendor.objects.get(ID =键)' – okm 2013-02-26 09:52:05

+0

完美..!非常感谢 – raghu 2013-02-26 09:57:38

回答

0

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

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

  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)) 

接下来的事情是要记住,get ORM调用返回一个对象,而不是一个列表。所以这个:

{% 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>