【问题标题】:Django suffix ForeignKey field with _id带有_id的Django后缀ForeignKey字段
【发布时间】:2012-10-18 10:37:51
【问题描述】:

假设我的模型中有一个字段 f 定义如下作为外键:

f = models.ForeignKey(AnotherModel)

django同步数据库时,db中创建的filed会被称为f_id,自动加上'_id'后缀。

问题是我希望数据库中的这个字段完全按照我在模型中定义的名称命名,在这种情况下为f。我怎样才能做到这一点?

【问题讨论】:

    标签: django foreign-keys


    【解决方案1】:

    原来有一个关键字参数叫做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 一起使用。
    • 谢谢@dschulz,但您所说的“AnotherModel 中需要此db_column 字段选项”是什么意思?因为我不认为数据库中调用的fAnotherModel 有任何关系,对吗?
    • 糟糕!我错了@Caperea,对不起。我的脑洞是关于AnotherModel 中主键列的名称。没错,在f 字段上使用db_column 字段选项就足够了。
    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 2023-04-06
    • 2011-12-14
    • 1970-01-01
    • 2015-11-02
    • 2020-06-06
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多