今天,在使用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')

本文介绍了一个在使用Django model建表时遇到的独特问题,即'unique_together'属性引用了不存在的字段。文章详细说明了如何通过正确定义字段实例来解决此问题。

529

被折叠的 条评论
为什么被折叠?



