Ich fand keine nette Möglichkeit, die Anzahl der Modelle in der Haupt-Admin-Seite hinzuzufügen, aber hier ist die Lösung, die ich schließlich verwende.
Kurz gesagt, ich berechne die Zählungen jedes Modells in den Signalen post_delete und post_save Methoden, speichern die Variablen in der benutzerdefinierten Anfrage (in einer Karte) und zeigen sie im erweiterten admin index.html durch einfaches Überprüfen mit einem if für jeden gewünschte Modelle.
Die erweiterte templates/admin/index.html:
{% if model.perms.change %}
<th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}
{% if model.name == "Mymodel1_verbose_name_plural" %} ({{ MODELS_COUNT.Mymodel1}}) {% endif %}
</a></th>
{% else %}
Meine individuelle Anfrage in util/context_processors.py:
from myproject import settings
def myproject(request):
return {
'request' : request,
'MODELS_COUNT' : settings.MODELS_COUNT
}
In meinem settings.py:
MODELS_COUNT = {
'Mymodel1': None,
'Mymodel2': None
}
TEMPLATE_CONTEXT_PROCESSORS = (
...
'myproject.util.context_processors.myproject',
)
I n myproject.__init__.py:
from django.db.models.signals import post_save, post_delete
def save_mymodel1_count(sender, instance=None, **kwargs):
if kwargs['created']:
settings.MODELS_COUNT['Mymodel1'] = Mymodel1.objects.count()
def delete_mymodel1_count(sender, instance=None, **kwargs):
settings.MODELS_COUNT['Mymodel1'] = Mymodel1.objects.count()
settings.MODELS_COUNT['Mymodel1'] = Mymodel1.objects.count()
post_save.connect(save_mymodel1_count, sender=Mymodel1)
post_delete.connect(delete_mymodel1_count, sender=Mymodel1)
Wenn Sie viele Modelle haben, schlage ich vor, dass Sie dies in einer allgemeineren Lösung verwandeln.
Möchten Sie die Anzahl aller registrierten Modelle in django admin erhalten? – dzida
Nicht unbedingt. Es gibt eine, die mich besonders interessiert. – Rog
Ich bin neugierig, wie hast du dein Problem endlich gelöst? –