如果用户在setting中配置了自己的选项了,那么global_setting中相同的配置项旧被弃用了
init.py
import importlib
from lib.conf import global_settings
import os
class Settings(object):
def __init__(self):
for name in dir(global_settings):
# print(dir(global_settings))
if name.isupper():
k = name
v = getattr(global_settings,name)
setattr(self,k,v) # 将项目默认的配置文件中所有的配置以键值对的形式存入到了settings对象中
# 从全局的大字典中获取暴露给用户的settings文件路径
module_path = os.environ.get('xxx')
module = importlib.import_module(module_path)
for name in dir(module):
if name.isupper():
k = name
v = getattr(module,name)
setattr(self,k,v) # 将暴露给用户的配置文件中所有的配置以键值对的形式存入到了settings对象中
settings = Settings()
start.py
import os
import sys
BASE_DIR = os.path.dirname(__file__)
sys.path.append(BASE_DIR)
# 项目启动 设置全局大字典{'xxx':'conf.settings'}
os.environ.setdefault('xxx','conf.settings')
from lib.conf import settings
print(settings.NAME)
如下图
from django.contrib import admin
from app01 import models
# Register your models here.
# print('from app01 admin')
class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish_date','publish']
list_display_links = ['title','price']
search_fields = ['title','price']
list_filter = ['publish','authors']
def patch_init(self,request,queryset):
queryset.update(price=666)
patch_init.short_description = '价格批量修改'
actions = [patch_init]
admin.site.register(models.Book,BookConfig)
admin.site.register(models.Publish)
admin.site.register(models.Author)
admin.site.register(models.AuthorDetail)
print(admin.site._registry)
原文:https://www.cnblogs.com/huanghongzheng/p/11278831.html