如何通过django中的queryset获取对象名称

时间:2014-09-24 01:50:52

标签: django

是否有任何属性或方法可以通过django中的queryset获取objects'name 我有一些像这样的代码

# in views.py
product = []
product.append(Pc.objects.filter(user__name=pk))  ## user is a foreignkey
product.append(Monitor.objects.filter(user__name=pk))
arr = { 'type': 1,
        'product': product,
        'name': name,
         }   
return render_to_response('list.html', arr)

在模板list.html中

......
 <tbody>
       {% for pr in product %}  
       <tr style="text-align:center" class="form-inline">
       <td>
       {{ name }}
       </td>
       {% for p in pr %}
       <td>
           {{ p.number }}
       </td>
       <td>
           {{ p.product }}
       </td>
       <td>
           {{ p.comment }}
       </td>
       <td>                                                                                                                                                                               
           <a href="/update/objects/{{ p.id }}/" class="btn btn-success btn-sm" >edit</a>
           <a href="/delete/objects/{{ p.id }}/" onclick="return confirm('Are you sure to delete?')" class="btn btn-danger btn-sm" >delete</a>
       </td>
       {% endfor %}
       {% endfor %}
       </tr>
  </tbody>

我应该如何在list.html中获得像Pc或Monitor这样的“对象”?

1 个答案:

答案 0 :(得分:1)

不是试图获取类型然后在模板中显示类名,为什么不在类中添加静态属性呢?

class Pc(models.Model):
   product_display_name = 'PC'

class Monitor(models.Model):
   product_display_name = 'Monitor'

然后在模板中

{% for p in pr %}
<td>
    {{ p.product_display_name }}
</td>
<td>
    {{ p.number }}
</td>
{% endfor %}

如果您真的想从该类型中获取名称,则可以使用以下

type(instance).__name__