Django自定义主键id nu

2024-06-01 03:02:31 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下这个模型:

class Organisation(models.Model):
    ref = models.CharField(max_length=50, primary_key=True)
    type = models.IntegerField(choices=ORGANISATION_TYPE_CHOICES, blank=True, null=True)
    org_name = models.CharField(max_length=255)
    org_name_lang = models.CharField(max_length=255, blank=True, null=True)

    date_created = models.DateTimeField(auto_now_add=True, editable=False)
    date_updated = models.DateTimeField(auto_now=True, editable=False)

我在创建时得到这个错误,但是实例实际上被保存了:

^{pr2}$

再次运行创建:

django.db.utils.IntegrityError: (1062, "Duplicate entry 'GB-CHC-202918' for key 'PRIMARY'")

我用的是mysql,还没有使用字符主键,是不是遗漏了什么?在

更新:已解决(存在具有自定义保存方法的相关模型)


Tags: keynameorg模型trueautodatemodels
1条回答
网友
1楼 · 发布于 2024-06-01 03:02:31

Django中的每个模型都有一个字段id,该字段被自动添加并用作主键(请参见Automatic primary key fields)。当您指定主键时,Django不会添加id字段,但是由于您遇到了这个错误,我认为您是在创建表之后添加了自己的主键?在

如果是这样,您可以删除表并重新创建(syncdb),或者添加一个数据库迁移来修改表结构(例如,使用south)。在

相关问题 更多 >