考虑这个模型:
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)
我在创建时遇到此错误,但事实上IS实际上已保存:
django.db.utils.IntegrityError: (1048, "Column 'organistion_id' cannot be null")
再次运行create:
django.db.utils.IntegrityError: (1062, "Duplicate entry 'GB-CHC-202918' for key 'PRIMARY'")
我正在使用mysql,并且没有使用过字符主键,我错过了什么?
更新:已解决(有一个带有自定义保存方法的相关模型)
答案 0 :(得分:0)
Django中的每个模型都有一个字段id
,它会自动添加,并用作主键(参见Automatic primary key fields)。当您指定主键时,Django不会添加id
字段,但由于您收到此错误,我认为您在创建表后添加了自己的主键?
如果是这样,您可以删除该表并重新创建它(syncdb
)或添加数据库迁移以修改表结构(例如,使用south)。