Django将ForeignKey字段后缀为_id。

27 浏览
0 Comments

Django将ForeignKey字段后缀为_id。

假设我在模型中有一个字段f,定义如下为一个外键:\n

f = models.ForeignKey(AnotherModel)

\n当Django同步数据库时,创建在数据库中的字段将被命名为f_id,自动添加后缀\'_id\'。\n问题是我希望在数据库中这个字段的名字与我在模型中定义的完全一致,比如这个例子中的f。我应该如何实现这个要求?

0
0 Comments

原因:在Django中,当定义一个ForeignKey字段时,默认情况下,该字段在数据库表中的列名会自动添加"_id"后缀。然而,有时候我们希望自定义该列名,而不添加"_id"后缀。

解决方法:可以使用ForeignKey字段的db_column参数来指定数据库表中该字段的列名。例如,如果想要字段名为'f',则可以将db_column参数设置为'f'。

具体代码如下:

f = models.ForeignKey(AnotherModel, db_column='f')

参考资料:

在Django官方文档的字段参考页面中,有关于db_column参数的说明。该参数表示用于该字段的数据库列名。如果没有指定该参数,Django将使用字段的名称作为列名。如果数据库列名是一个SQL保留字,或者包含在Python变量名中不允许的字符(尤其是连字符),那也没问题。Django在幕后会为列名和表名加上引号。

参考链接:https://docs.djangoproject.com/en/2.2/ref/models/fields/#db-column

另外,还有一个参与讨论的用户提到,可能还需要在AnotherModel中使用db_column参数,并在f字段上设置primary_key=True。然而,这个观点是错误的,因为在这个问题中,数据库中f字段的列名与AnotherModel的定义无关。使用在f字段上设置db_column参数即可解决问题。

0