Nie znalazłem żadnego fajnego sposobu na dodanie liczby modeli na głównej stronie administratora, ale tutaj jest rozwiązanie, które w końcu wykorzystuję.
W skrócie obliczam liczbę poszczególnych modeli w sygnałach post_delete i post_save method, przechowuj zmienne w niestandardowym żądaniu (na mapie) i wyświetlaj je w rozszerzonym admin index.html, po prostu zaznaczając if dla każdego pożądane modele.
Rozszerzony Szablony/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 %}
Moja prośba zwyczaj w util/context_processors.py:
from myproject import settings
def myproject(request):
return {
'request' : request,
'MODELS_COUNT' : settings.MODELS_COUNT
}
W moim 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)
Jeśli masz dużo modeli, proponuję, aby przekształcić to w sposób bardziej ogólny rozwiązania.
Czy chcesz uzyskać liczbę WSZYSTKICH zarejestrowanych modeli w admin django? – dzida
Niekoniecznie. Szczególnie interesuje mnie jeden z nich. – Rog
Jestem ciekawa, jak w końcu udało Ci się rozwiązać swój problem? –