2014-09-24 79 views
0

获取对象名称是否有任何属性或方法来获取objects'name通过查询集在Django 我有这样如何通过查询集在Django

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

我应该如何得到像PC或监视器list.html中的“对象”?

回答

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__ 
+0

这是一个方法,通过获取对象的名称定义对象时添加display_name。我是一个新的django学习者,我想我还有很长的路要走。 – nnic 2014-09-24 06:31:37