Django将ForeignKey字段后缀为_id。
原因:在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参数即可解决问题。