最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django批量向admin注冊(cè)模型方法詳解

 更新時(shí)間:2023年06月21日 14:56:12   作者:alue  
這篇文章主要為大家介紹了Django批量向admin注冊(cè)模型方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

大量模型需要注冊(cè)到 admin 頁(yè)面

如果有大量模型需要注冊(cè)到 admin 頁(yè)面, 手工一個(gè)個(gè)復(fù)制粘貼,然后修改名稱, 還挺麻煩. 有沒(méi)有自動(dòng)化途經(jīng)呢?

一個(gè)最直觀的做法如下:

from django.apps import apps  
models = apps.get_models()  
for model in models:  
    admin.site.register(model)

的確能夠完成目標(biāo), 但存在一個(gè)缺陷. 如果有些模型已經(jīng)被注冊(cè)過(guò)了, 那么程序?qū)伋霎惓? 因?yàn)槟P筒荒苤貜?fù)注冊(cè).

所以, 可以做個(gè)異常處理, 如果已經(jīng)注冊(cè), 那就 pass.

from django.apps import apps  
models = apps.get_models()  
for model in models:  
try:  
    admin.site.register(model)  
except admin.sites.AlreadyRegistered:  
    pass

這里要注意, 上述代碼必須放在所有 admin 注冊(cè)行為之后運(yùn)行.

如果, 我們想讓注冊(cè)后的 admin 列表頁(yè)自動(dòng)顯示所有字段, 那該如何修改上述代碼呢?
我們可以利用 admin.register(model_or_iterable, admin_class=None) 方法的第二個(gè)參數(shù) admin_class , 來(lái)實(shí)現(xiàn)這一行為.

list_display 的動(dòng)態(tài)獲取

通過(guò)構(gòu)造 mixin 類 ListAdminMixin, 實(shí)現(xiàn) list_display 的動(dòng)態(tài)獲取:

from django.apps import apps  
from django.contrib import admin  
class ListAdminMixin(object):  
    def __init__(self, model, admin_site):  
        self.list_display = [field.name for field in 
        model._meta.fields]  
        super(ListAdminMixin, self).__init__(model, admin_site)  
models = apps.get_models()  
for model in models:  
    admin_class = type('AdminClass',
    (ListAdminMixin,admin.ModelAdmin), {})  
    try:  
        admin.site.register(model, admin_class)  
    except admin.sites.AlreadyRegistered:  
        pass

這樣就實(shí)現(xiàn)了預(yù)期的功能.

以上就是Django批量向admin注冊(cè)模型方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Django批量向admin注冊(cè)模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

务川| 和林格尔县| 安化县| 保靖县| 清丰县| 原平市| 新昌县| 甘孜县| 黄大仙区| 镇康县| 封开县| 连云港市| 东丰县| 长治县| 祁东县| 英德市| 尖扎县| 思茅市| 修文县| 搜索| 阳春市| 天门市| 临安市| 淳安县| 丰台区| 莆田市| 宁海县| 东台市| 陇南市| 灌阳县| 岳阳市| 天津市| 托克逊县| 伊金霍洛旗| 卓资县| 宜兰市| 泽普县| 香格里拉县| 巢湖市| 通山县| 青海省|