django CommandError:一个或多个模型未验证:

时间:2014-12-10 13:52:41

标签: python django

Model类是由django inspectdb生成的,我可以看到Id字段,这是从Legacy表转换而来的,这里的表不能改变,

class workFlowTemplate(models.Model):
    rev = models.IntegerField(null=True, blank=True)
    revtype = models.IntegerField(null=True, blank=True)
    **id = models.IntegerField(null=True, blank=True)**
    name = models.CharField(max_length=255, blank=True,primary_key=False)
    class Meta:
        db_table = 'workflow_template'

问题是当我尝试运行django时会抛出错误

CommandError: One or more models did not validate:
pHApp.workflowtemplate: "id": You can't use "id" as a field name, because each model automatically gets an "id" field if none of the fields have primary_key=True. You need to either remove/rename your "id" field or add primary_key=True to a field.

注意

the id is not primary key here in this case,

当我试图改变时 id = models.IntegerField(null = True,blank = True, primary_key = False)

问题仍然保持不变,同样的错误再次重复,如何避免这个问题?

2 个答案:

答案 0 :(得分:1)

模型必须具有主键,因此您需要指定主键字段,如下所示:

my_primary_key = models.AutoField(primary_key=True)
id = models.IntegerField(null=True, blank=True)

然后它不会添加自动id列,您将不会收到此错误。

答案 1 :(得分:0)

如果您没有将另一个字段指定为PK,则默认情况下,列id将由django添加。 在您的情况下,您将id指定为您的字段,但未指定哪个字段应为主键。 解决方案 - 将另一个字段设置为主键,因为您无法重命名id