我正在为 django
编写一个应用程序,我打算发布它。此应用需要一个 bool 值
设置变量CONSUMER_REGISTRATION
。
获取这个变量的目的是决定是否定义ConsumerRegistrationModel
。
我就是这样做的。
from django.db import models
from django.conf import settings
if getattr(settings, 'CONSUMER_REGISTRATION', False):
class ConsumerRegistration(models.Model):
...
它工作正常。我面临的唯一问题是开发人员每次更改设置中的变量时都需要运行 makemigrations 和迁移命令。
1- 这项工作可以自动化吗?。因此,如果他们更改变量,则 django 中的一些代码会自动运行 makemigrations 和 migrate 命令。
2- 还是将这项工作留给开发人员就完全没问题了??
3- 另外我想问一下在 django 中这样做是不是一个好方法?
最佳答案
接受的答案并没有真正提供一种方法来完成 OP 所要求的,即有条件地声明模型。
人们可能出于各种原因想要这样做,从根本不声明模型到根据设置以不同方式声明模型(暗示如果您这样做:您打算在不同的地方使用不同的设置)。
一种解决方案是将模型放在自己的应用程序中,并根据设置有条件地包含该应用程序:
# Set this your per-project settings:
CONSUMER_REGISTRATION = True
# Set this in the generic settings
INSTALLED_APPS = [...]
if CONSUMER_REGISTRATION:
INSTALLED_APPS.append('consumer_registration') # Models will be loaded.
创建一个只包含一个模型的应用程序没有错。
关于“自动化”它,如果在设置为真时运行迁移,将创建表。改成false不会删除表。
关于python - 有条件的 Django 模型创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476900/