【发布时间】:2012-10-18 10:37:51
【问题描述】:
假设我的模型中有一个字段 f 定义如下作为外键:
f = models.ForeignKey(AnotherModel)
django同步数据库时,db中创建的filed会被称为f_id,自动加上'_id'后缀。
问题是我希望数据库中的这个字段完全按照我在模型中定义的名称命名,在这种情况下为f。我怎样才能做到这一点?
【问题讨论】:
标签: django foreign-keys
假设我的模型中有一个字段 f 定义如下作为外键:
f = models.ForeignKey(AnotherModel)
django同步数据库时,db中创建的filed会被称为f_id,自动加上'_id'后缀。
问题是我希望数据库中的这个字段完全按照我在模型中定义的名称命名,在这种情况下为f。我怎样才能做到这一点?
【问题讨论】:
标签: django foreign-keys
原来有一个关键字参数叫做db_column。如果你想要数据库中名为'f'的字段就像这样简单:
f = models.ForeignKey(AnotherModel, db_column='f')
进一步参考:
要用于的数据库列的名称 这个领域。如果没有给出,Django 将使用该字段的名称。
如果您的数据库列名是 SQL 保留字,或包含 Python 变量名中不允许使用的字符——特别是, 连字符——没关系。 Django 在后面引用列名和表名 场景。
https://docs.djangoproject.com/en/2.2/ref/models/fields/#db-column
【讨论】:
AnotherModel 中需要此 db_column 字段选项,可能与 f 字段中的 primary_key=True 一起使用。
AnotherModel 中需要此db_column 字段选项”是什么意思?因为我不认为数据库中调用的f 与AnotherModel 有任何关系,对吗?
AnotherModel 中主键列的名称。没错,在f 字段上使用db_column 字段选项就足够了。