【问题标题】:id field which is not primary key in django django modelid 字段不是 django django 模型中的主键
【发布时间】:2021-10-24 13:46:02
【问题描述】:

是否可以在不是 django 中的 primary_key 的模型中创建 id 字段?如果是这样,该怎么做?为了更清楚,这是我的模型:

class GWS(models.Model):
    id = models.CharField(max_length=20,primary_key=False)
    ...

如何防止 id 字段成为主键?

api.GWS: (models.E004) 'id' can only be used as a field name if the field also sets 'primary_key=True'

【问题讨论】:

  • ,但是你需要另一个主键。
  • 我尝试添加 Autofield 字段,但 django 在应用迁移时抛出错误
  • @leauradimin:正是 what 错误。如果您已经在之前的迁移中构建了 GWS 模型,这可能不起作用,因此您应该通过一次迁移为该模型创建表。
  • django.db.utils.ProgrammingError: 错误:为表的“auto_field”列指定了几个默认值
  • 你是如何指定AutoField的?您不能为AutoField 设置默认值,因此它应该是otherfieldname = AutoField(primary_key=True)

标签: django postgresql


【解决方案1】:

是否可以在模型中创建一个不是 django 中的 primary_key 的 id 字段?

,但是您需要指定另一个作为主键的字段,例如UUIDField field [Django-doc]

from uuid import uuid4

class GWS(models.Model):
    id = models.CharField(max_length=20)
    uuid = models.UUIDField(primary_key=True, editable=False, default=uuid4)
    # …

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2022-01-22
    • 2016-03-12
    • 2011-04-08
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多