当前位置: 首页 > 面试题库 >

Django-如何使用South重命名模型字段?

宿衡虑
2023-03-14
问题内容

我想更改模型中特定字段的名称:

class Foo(models.Model):
    name = models.CharField()
    rel  = models.ForeignKey(Bar)

应更改为:

class Foo(models.Model):
    full_name     = models.CharField()
    odd_relation  = models.ForeignKey(Bar)

使用South进行此操作最简单的方法是什么?


问题答案:

你可以使用该db.rename_column功能。

class Migration:

    def forwards(self, orm):
        # Rename 'name' field to 'full_name'
        db.rename_column('app_foo', 'name', 'full_name')




    def backwards(self, orm):
        # Rename 'full_name' field to 'name'
        db.rename_column('app_foo', 'full_name', 'name')

的第一个参数db.rename_column是表名,因此记住Django如何创建表名很重要:

Django自动从你的模型类和包含它的应用程序的名称中派生数据库表的名称。通过将模型的“应用程序标签”(即你在manage.py startapp中使用的名称)与模型的类名称连接在一起,并在其之间加下划线,来构造模型的数据库表名称。

在你有一个多措辞,骆驼套管型号名称的情况下,如项目项,表名会app_projectitem(即下划线不会之间插入projectitem即使它们是骆驼式大小写)。



 类似资料:
  • 问题内容: 我一直在South的网站,Google和SO上寻找答案,但是找不到简单的方法来做到这一点。 我想使用South重命名Django模型。说你有以下几点: 并且你想要将转换为,即 为简单起见,我只是尝试将名称从更改为,但现在忽略其中的成员。 使用South进行此操作最简单的方法是什么? 我可能可以进行数据迁移,但这似乎很复杂。 编写一个自定义迁移,例如,但是在这种情况下我不确定如何修复外键

  • 问题内容: 我在想,如果以下迁移是可能的Django的南部和仍然保留的数据。 之前: 我目前有两个应用程序,一个叫做电视,一个叫做电影,每个都有一个VideoFile模型(在这里简化): tv/models.py: movies/models.py: 后: 因为这两个videofile对象是如此相似,所以我想摆脱重复并在一个名为media的单独应用中创建一个新模型,其中包含通用的VideoFile

  • 问题内容: 我计划重命名现有Django项目中的多个模型,在该模型中,还有许多其他模型与我要重命名的模型具有外键关系。我相当确定这将需要多次迁移,但是我不确定确切的过程。 假设我从Django应用程序中的以下模型开始: 我想重命名该模型,因为该名称实际上没有任何意义,并且会导致代码混乱,并且会使名称更清晰。 根据我在Django开发文档中阅读的内容,我假设采用以下迁移策略: 第1步 修改 请注意,

  • 问题内容: 如何在Django上使用South执行向后迁移? 因此,我调整了模型,使用进行了迁移schemamigration,使用进行了迁移migrate,现在我意识到这并不是我想要的,并且我想回到以前的样子。 除了手动编辑数据库表和删除迁移文件之外,我应该如何回滚迁移?我找到了通过Google通过South使用向后迁移的参考,但尚未找到可靠的代码示例。 有人可以帮忙吗? 问题答案: 你需要在要

  • 问题内容: 当我仅知道字段名称和模型名称(均为纯字符串)时,我试图获取模型内部字段上的类信息。这怎么可能? 我可以动态加载模型: 现在我有一个字段-‘myfield’-如何获取该字段的类? 如果字段是关系字段-如何获取相关字段? 谢谢一群! 问题答案: 您可以使用模型的属性来获取字段对象,并且可以从字段中获取关系以及更多其他信息,例如,考虑一个雇员表,该雇员表具有一个部门表的外键 来自django

  • 我的自定义用户模型: 有没有办法指定多个?类似于这样用户就可以通过email和username登录了?