Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改现有Django模型上的app_标签分配是个坏主意吗?_Python_Django_Templates_Models_Admin - Fatal编程技术网

Python 更改现有Django模型上的app_标签分配是个坏主意吗?

Python 更改现有Django模型上的app_标签分配是个坏主意吗?,python,django,templates,models,admin,Python,Django,Templates,Models,Admin,我有一个头脑简单的想法,将不同现有应用程序中的模型组合成一个全新的闪亮应用程序。我需要这样做并没有什么特别重要的原因,但是将所有代码整合到一个子目录中会很好,而且将所有模型组合在同一个模块标题下的admin_索引中会改进站点 我的第一个想法是将现有的表名硬编码到所有模型的Meta中的db_table设置中,然后给每个模型一个相同的app_标签设置 但我担心这可能会破坏所有内容的ContentType和auth权限设置。以前有人试过这个吗?我在谷歌上搜索了一下,没有看到任何能直接解决这个问题的东西

我有一个头脑简单的想法,将不同现有应用程序中的模型组合成一个全新的闪亮应用程序。我需要这样做并没有什么特别重要的原因,但是将所有代码整合到一个子目录中会很好,而且将所有模型组合在同一个模块标题下的admin_索引中会改进站点

我的第一个想法是将现有的表名硬编码到所有模型的Meta中的
db_table
设置中,然后给每个模型一个相同的
app_标签
设置


但我担心这可能会破坏所有内容的ContentType和auth权限设置。以前有人试过这个吗?我在谷歌上搜索了一下,没有看到任何能直接解决这个问题的东西,不过似乎有一些人想出了一些巧妙的方法,用一些自定义配置设置来重新整理管理员索引。

你是对的,移动模型会使现有的ContentType条目变得无用。如果不了解项目的具体情况,很难说什么是“好主意”。您可以尝试对代码进行分支,进行更改,并更新内容类型和权限表以反映。或者,您也可以使用South编写数据迁移,尽管要在迁移的创建或运行时间与移动模型的时间之间找到平衡可能很困难。如果能够运行trunk:,您还可以签出自然密钥。这可能会导致以更通用的方式将数据导出到装置中的更容易的路径,这样一旦您进行了更改,就可以轻松地将它们加载到装置中


如果您计划使用Django一段时间和/或从事大型项目,您将需要开始培养处理这些类型更改的技能。不断发展的代码和重构是生活中的事实。了解在临时环境中进行这些更改的陷阱,将使您能够更好地应对团队环境和大型项目中确实出现的各种问题。

谢谢您的建议,Brian。我尝试通过硬编码
db\u表
并添加新的
app\u标签
来调整其中一个模型。用新的app_标签创建了一个新的ContentType对象,听起来不错。但是似乎没有创建相应的权限,当我在新ContentType上运行ct.permission\u set.all()时,会得到一个空列表。尝试运行这些家伙来更新权限,但运气不佳。