【问题标题】:Django change foreign keys to BigIntDjango 将外键更改为 BigInt
【发布时间】:2020-06-10 19:13:34
【问题描述】:

我有两个模型(商店和产品),两者的主键都是 BigInt,但产品 (store_id) 中的关系列仍然是整数。我不想使用原始 sql,如何使用 django 解决这个问题?

例子:

class Product:
  id = models.BigAutoField(primary_key=True, editable=False)
  store = models.ForeignKey(
          to='stores.Store', on_delete=models.CASCADE
      )

class Store:
  id = models.BigAutoField(primary_key=True, editable=False)

模型 Products 中的 store_id 仍然是数据类型整数

【问题讨论】:

  • 我认为您需要更多信息在这里...您可以不只是更改数据库以匹配类型吗?
  • 欢迎来到 SO!我认为您可以通过minimal reproducible example 提高获得答案的机会
  • @TimTisdall 我可以直接更改数据库,但这是一个大型应用程序,可能需要很长时间。我宁愿使用 Django 以编程方式解决问题,以防它再次出现。
  • 啊。您正在尝试修复 Django,使 ForeignKey 成为错误的类型?我很惊讶它没有从主键列中获取类型。创建后你修改了吗?
  • 你是不是先创建ForeignKey,然后修改id字段为BigAutoField?

标签: django postgresql model foreign-keys biginteger


【解决方案1】:

您可以删除默认的自动字段并使用BigAutoField 来代替命名primary_key 字段

id = models.BigAutoField(primary_key=True)

【讨论】:

  • 是的,这就是我现在拥有主键的方式。但是外键我无法更改数据类型。
猜你喜欢
  • 2012-02-19
  • 2014-01-17
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多