在我的 Python 3.9, Django 3.2 專案中,我有這個通用檔案夾結構
- manage.py
cbapp
models
- __init__.py
- vendor.py
- user_preferences.py
在我的init .py 檔案中,我列出了所有模型條目......
from .vendor import Vendor
from .user_preferences import UserPreferences
...
每個模型類,例如 Vendor,都有這樣的一般結構
from django.db import models
class Vendor(models.Model):
...
每次添加新模型時,我都必須在init .py 檔案中添加一行。有什么辦法可以撰寫我的init .py 檔案,以便它只會自動匯入我添加到模型目錄中的新檔案?
uj5u.com熱心網友回復:
您正在尋找的是一些奇特的動態匯入,例如這些.
如果您的模型名稱在您的模塊名稱上始終是相同的模式,則init .py 中的以下代碼可能會起作用:
import os, glob
path = os.path.dirname(__file__)
modules = [os.path.basename(f)[:-3] for f in glob.glob(path "/*.py")
if not os.path.basename(f).startswith('_')]
stripped_path = os.path.relpath(path).replace('/', '.')
imports = {}
for module in modules:
model_name = module.title().replace("_", "")
imports[model_name] = getattr(__import__(stripped_path "." module, fromlist=[model_name]), model_name)
print(imports)
globals().update(imports)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352968.html
標籤:蟒蛇-3.x 姜戈 django-models 在里面
上一篇:將Django資料限制為當前用戶
