Tôi không tìm thấy bất kỳ cách hay nào để thêm số lượng mô hình trong trang quản trị chính, nhưng đây là giải pháp mà cuối cùng tôi đã sử dụng.
Tóm lại, tôi tính toán số lượng của từng mô hình trong các phương thức post_delete và post_save, lưu các biến trong yêu cầu tùy chỉnh (trong bản đồ) và hiển thị biến trong index.html admin chỉ bằng cách kiểm tra nếu có các mô hình mong muốn.
Các mở rộng 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 %}
yêu cầu tùy chỉnh của tôi trong util/context_processors.py:
from myproject import settings
def myproject(request):
return {
'request' : request,
'MODELS_COUNT' : settings.MODELS_COUNT
}
Trong settings.py tôi:
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)
Nếu bạn có rất nhiều mô hình, tôi đề nghị bạn nên chuyển đổi này trong một giải pháp chung chung hơn.
Nguồn
2011-12-01 11:41:20
Bạn có muốn nhận số lượng TẤT CẢ các mô hình đã đăng ký trong quản trị django không? – dzida
Không nhất thiết. Có một điểm đặc biệt mà tôi quan tâm. – Rog
Tôi tò mò, cuối cùng bạn đã giải quyết vấn đề của mình như thế nào? –