django model (models.E012) 'unique_together' refers to the non-existent field

    今天,在使用django model建表的过程中,遇到一个诡异的bug,django一直给我提示(models.E012) 'unique_together' refers to the non-existent field。我一直没明白,错误代码如下

class Test(models.Model):
    index = models.IntegerField
    score = models.IntegerField

    class Meta:
        unique_together = ('index', 'score')

    经过多次调试,发现删除meta能够建表,加上meta就报错。原因在于这时的index和score是一个字段类,在meta中,Django检测并枚举字段实例(即通过运行isinstance(v, Field))来创建字段。因此,在这种情况下,无法使用meta。我们只需加上一对括号,index和score就变成了字段实例,就能正确运行了。正确的代码如下:

class Test(models.Model):
    index = models.IntegerField()
    score = models.IntegerField()

    class Meta:
        unique_together = ('index', 'score')


你可能感兴趣的:(python,django)