gpt4 book ai didi

Django South根据环境加载固定装置(开发、集成、生产)

转载 作者:行者123 更新时间:2023-12-01 15:21:48 26 4
gpt4 key购买 nike

我正在开发一个使用 Django 和 South 进行迁移的项目。我想设置一些固定装置,用于在某些环境(开发、演示)中而不是在其他环境(生产)中填充数据库。例如,我希望系统中有一些数据,这样 UI 开发人员就可以在他们正在处理的界面中使用一些东西,或者我们可以快速为项目经理做一个演示,而无需通过手动设置管理界面。

虽然我找到了很多方法来将自动化测试 fixture 与常规 fixture 分开,但我还没有找到任何关于基于环境加载 fixture 的信息。这可能吗,或者是否有其他方法可以解决我忽略的这个问题?

最佳答案

对于 initial_data 装置,您无能为力。但是,我一直觉得这些工具的效用无论如何都不够理想。您很少希望在每次调用 syncdbmigrate 时一次又一次地应用相同的装置。

如果您使用的是一些不同名称的固定装置,您可以通过将以下内容添加到您的前向迁移中(来自 South docs)轻松地使其与您的迁移一起运行

from django.core.management import call_command
call_command("loaddata", "my_fixture.json")

所以说真的,您所需要的只是某种仅在特定环境中执行此操作的方法。对于开发人员来说,最简单的方法就是简单地依赖 DEBUG。所以,之前的代码变成了:

from django.conf import settings
from django.core.management import call_command
if settings.DEBUG:
call_command("loaddata", "dev_fixture.json")

如果您需要更好的控制,您可以创建某种在每个 local_settings.py 中都不同的设置(或您用来根据环境自定义设置的任何方法)。例如:

# local_settings.py
ENV = 'staging'

# migration
from django.conf import settings
from django.core.management import call_command
if settings.ENV == 'staging':
call_command("loaddata", "staging_fixture.json")

关于Django South根据环境加载固定装置(开发、集成、生产),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9116987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com