Django 如何在与href中的id进行比较后显示db中的记录

Django 如何在与href中的id进行比较后显示db中的记录,django,Django,问题是在比较href中的id后,我无法在edit_vendor.html中显示记录 请找个人 我有自己的观点 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(reque

问题是在比较href中的id后,我无法在edit_vendor.html中显示记录 请找个人 我有自己的观点

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>

编辑_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%}
{%用于obj%中的供应商]
供应商名称:
地址:
联系人:
创建日期
{%endfor%}
您使用的是
get()
,它总是返回单个对象,而不是列表

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

  • 如果希望查询只获取1个对象,请使用“获取对象”或“获取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>
    
    
    供应商名称:
    地址:
    联系人:
    创建日期

    尝试
    obj=Vendor.objects.get(id=id)
    而不是当前的
    obj=Vendor.objects.get(id=key)
    完美。。!多谢各位