Django:不删除模型覆盖AutoField的verbose_name

3 投票
2 回答
2486 浏览
提问于 2025-04-11 17:53

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

我有一个模型,没有给它设置主键。Django会自动生成一个叫“id”的字段,这个没问题。但是现在,我想把这个自动生成的“id”字段的显示名称改成别的名字。我不能像平常那样直接覆盖“id”字段,因为那样会导致整个模型和数据都被删除或重置,这样做是不行的。我找不到其他解决办法。请问我想要的这个改动到底能不能实现?如果你能给我一些建议,让我在不删除模型或表的情况下实现这个目标,我会很感激。

2 个回答

2

看看 manage.py 这个命令行工具的选项;里面有一个命令可以把所有的模型数据导出为 JSON 格式,还有一个命令可以把 JSON 格式的数据导入回来。你可以先把所有模型的数据导出来,给模型添加你需要的新字段,然后再把数据导入回来。记得要把 db_column 选项设置为 'id',这样就不会破坏你原来的数据了。

补充说明:具体来说,你需要使用的命令是 dumpdataloaddata

4

嗯……那在模型定义中明确写出id字段怎么样呢?比如这样:

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

这样做不需要对底层数据库进行任何更改。

撰写回答