Django:在不删除模型的情况下覆盖AutoField的verbose_name

时间:2008-11-03 14:27:08

标签: python django

我正在使用Django的 0.97-pre-SVN-unknown 版本。

我有一个模型,我没有给出任何primary_key。因此,Django会自动提供一个名为“id”的AutoField。一切都很好。但是现在,我必须将该AutoField的“verbose_name”更改为“id”以外的其他内容。我不能以通常的方式覆盖“id”字段,因为这将需要删除/重置整个模型及其数据(这绝对不是一个选项)。我无法找到另一种方法。我想要的甚至可能实现吗?如果你可以建议任何可以让我得到我想要的东西,而不必丢弃模型/桌子,我会很高兴。

非常感谢。

2 个答案:

答案 0 :(得分:4)

嗯......那么在模型定义中明确写出 id 字段呢?像这样举例如:

class Entry(models.Model):
   id = models.AutoField(verbose_name="custom name")
   # and other fields...

它不需要任何基础数据库更改。

答案 1 :(得分:2)

查看manage.py的命令行选项;有一个命令将所有模型数据转储到JSON,另一个命令将其从JSON加载回来。您可以导出所有模型数据,将新字段添加到模型中,然后重新导入数据。只需确保将db_column选项设置为'id',这样就不会中断现有数据。

修改:具体来说,您需要命令dumpdataloaddata