我有一个名为“foocore”的 Django 核心应用程序。
有几个可选的类似插件的应用程序。例如“superfoo”。
在我的例子中,每个插件都在属于“foocore”的模型 CharField 中添加了一个新选择。
如果选择列表发生变化,Django 迁移会检测变化。
我觉得没必要。至少有一位其他开发人员也这么认为:
https://code.djangoproject.com/ticket/22837
class ActivePlugin(models.Model):
plugin_name = models.CharField(max_length=32, choices=get_active_plugins())
获取选择的代码:
class get_active_plugins(object):
def __iter__(self):
for item in ....:
yield item
核心“foocore”在多个项目中使用,每个安装都有一组不同的插件。 Django 试图创建无用的迁移....
有没有办法解决这个问题?
最佳答案
有关更多信息,请参阅此错误报告和讨论:https://code.djangoproject.com/ticket/22837
建议的解决方案是使用可调用对象作为选择的参数,但似乎这还没有针对字段执行,而仅针对表单执行。
如果您确实需要动态选择,ForeignKey
是最佳解决方案。
另一种解决方案是通过字段的自定义清理方法和/或创建自定义表单来添加要求。表单字段支持可调用的选择
。
有关详细信息,请参阅此答案:https://stackoverflow.com/a/33514551/54017
关于python - 如果字段的选择列表发生变化,则停止 Django 创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788450/