我想用初始数据预填充一些表,并且还要修改certian字段。我目前正在通过编写自定义管理命令并使用python manage.py填充数据库来做到这一点。 最近,我读了一些灯具,并了解了灯具用于相同的目的。哪种方法是正确的方法?为什么或为什么不应该使用管理命令来完成?
management / commands / init_test_data.py中的示例代码
class Command(BaseCommand):
help = 'Initializes test data'
@transaction.atomic
def handle(self, *args, **kwargs):
__location__ = os.path.realpath(os.path.join(
os.getcwd(), os.path.dirname(__file__)))
fname = os.path.join(__location__, 'init_test_data.json')
with open(fname) as f:
parsed = json.load(f)
for tenant in parsed.get('tenants'):
self.create_tenant(tenant)
def create_tenant(self, tenant):
tenant_obj = Tenant()
tenant_obj.name = tenant["name"]
tenant_obj.subdomain = tenant["subdomain"]
tenant_obj.identifier = tenant["identifier"]
tenant_obj.save()
for org in tenant.get('organisations'):
self.create_org(tenant_obj, org)
admin_email = "sysadmin_" + tenant_obj.name + "@exza.com"
admin_roles = ["tenant_system_admin", "tenant_admin"]
self.create_user(None, tenant_obj, admin_email, admin_roles, True, True)
for asset in tenant.get('assets'):
self.create_dummy_asset(tenant_obj, asset.get('name'))
答案 0 :(得分:2)
固定装置确实是设置一些初始数据的方法。如果您想执行一些更复杂的操作,则可以使用自定义迁移(https://docs.djangoproject.com/en/2.2/howto/writing-migrations/)