Tôi đang viết một công cụ quản trị tùy chỉnh và cần nhận tất cả các mô hình đã đăng ký trong Quản trị viên. Điều này có thể không? Tôi cần nó để thực hiện một số quan điểm tùy chỉnh trên trang chỉ mục quản trị.Django quản trị - làm thế nào để có được tất cả các mô hình đã đăng ký trong templatetag?
9
A
Trả lời
14
Bạn có thể truy cập vào admin.site._registry
dict của Model-> ModelAdmin:
>>> ./manage.py shell
In [1]: from urls import * # load admin
In [2]: from django.contrib import admin
In [3]: admin.site._registry
Out[3]:
{django.contrib.auth.models.Group: <django.contrib.auth.admin.GroupAdmin at 0x22629d0>,
django.contrib.auth.models.User: <django.contrib.auth.admin.UserAdmin at 0x2262a10>,
django.contrib.sites.models.Site: <django.contrib.sites.admin.SiteAdmin at 0x2262c90>,
testapp.models.Up: <django.contrib.admin.options.ModelAdmin at 0x2269c10>,
nashvegas.models.Migration: <nashvegas.admin.MigrationAdmin at 0x2262ad0>}
Đây là những gì các quan điểm chỉ số quản trị thực hiện:
@never_cache
def index(self, request, extra_context=None):
"""
Displays the main admin index page, which lists all of the installed
apps that have been registered in this site.
"""
app_dict = {}
user = request.user
for model, model_admin in self._registry.items():
# ...
Lưu ý rằng các biến bắt đầu bằng một dấu gạch dưới là có khả năng áp dụng những thay đổi trong các phiên bản tương lai của django.
Bạn có biết nếu có một số phương pháp để có được ứng dụng thực tế mà người dùng đang ở trong quản trị viên không? Nếu nó là dahsboard nó sẽ không trả về ứng dụng nào, nhưng đối với những người khác, nó trả về tất cả nhãn hoặc đối tượng. Tôi muốn sử dụng nó như templatetag trong menu quản trị toàn cầu của tôi. – tunarob
Tôi không hiểu, bạn có thể mở một câu hỏi khác và cung cấp thêm chi tiết không? – jpic