django 數據庫遷移結束之后,就執行的代碼
在你需要的app下面創建signals.py文件該文件下寫出你需要執行的函數或類
例如
from django.db import transaction from user import models from logger import log class CreatePermissions(object): @staticmethod def create_permissions(sender, **kwargs): permissions = ["upload", "login", "admin", "user"] with transaction.atomic(): for i in permissions: models.Permission.objects.get_or_create(name=i, description=f"Already endowed{i} permissions") log.info(f"signal: create {permissions} permissions success")
然后在對應的app.py下面寫入以下代碼:
from django.apps import AppConfig from django.db.models.signals import post_migrate class UserConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'user' def ready(self) -> None: from user.signals import CreatePermissions # 數據庫遷移結束時,就創建權限角色 post_migrate.connect(CreatePermissions.create_permissions, sender=self) # type: ignore
浙公網安備 33010602011771號