我在Python 3.5.3上有Django 2.0.3。我搜索简单的方法来改进我的标准Django Admin仪表板(Django Admin的主页)。
以下是管理主页./templates/admin/index.html
的模板:
{% extends "admin/base_site.html" %}
{% load i18n static %}
{% block extrastyle %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}"/>{% endblock %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block content %}
<div id="content-main">
{% if app_list %}
{% for app in app_list %}
<div class="app-{{ app.app_label }} module">
<table>
<caption>
<a href="{{ app.app_url }}" class="section"
title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">{{ app.name }}</a>
</caption>
{% for model in app.models %}
<tr class="model-{{ model.object_name|lower }}">
{% if model.admin_url %}
<th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
{% else %}
<th scope="row">{{ model.name }}</th>
{% endif %}
{% if model.add_url and request.user.is_superuser %}
<td><a href="{{ model.add_url }}" class="addlink">{% trans 'Add' %}</a></td>
{% else %}
<td> </td>
{% endif %}
{% if model.admin_url and request.user.is_superuser %}
<td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
{% else %}
<td> </td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
{% endfor %}
{% else %}
<p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
</div>
{% endblock %}
我删除侧边栏,因为我从不使用它。它看起来像:
我想为每个模型添加对象的链接数。例如,Cities (23)
,Citizenships (102)
和列表中的所有模型类似。我尝试在@property
中使用./app/models.py
装饰器添加功能,但它不起作用:
class APIConfig(models.Model):
...
@property
def with_active_status(self):
return self.objects.filter(is_active=True).count()
...
我在管理员模板中调用此属性,例如{{ model.with_active_status }}
,但它没有显示任何内容。
答案 0 :(得分:0)
这不是财产。您没有模型实例可以调用它。在任何情况下,如果你确实有一个实例它仍然无法工作,因为模型管理器 - objects
- 只能从类而不是实例访问。
你应该把它变成一种类方法:
@classmethod
def with_active_status(cls):
return cls.objects.filter(is_active=True).count()