我正在开发Django应用程序,并且出现以下错误
'Sheep' object has no attribute _state
我的模型是这样构造的
class Animal(models.Model): aul = models.ForeignKey(Aul) weight = models.IntegerField() quality = models.IntegerField() age = models.IntegerField() def __init__(self,aul): self.aul=aul self.weight=3 self.quality=10 self.age=0 def __str__(self): return self.age class Sheep(Animal): wool = models.IntegerField() def __init__(self,aul): Animal.__init__(self,aul)
我应该做什么?
首先,您必须非常小心地重写__init__以具有非可选参数。记住,每次从一个查询集中获取一个对象时,它将被调用!
__init__
这是您想要的正确代码:
class Animal(models.Model): #class Meta: #uncomment this for an abstract class # abstract = True aul = models.ForeignKey(Aul) weight = models.IntegerField(default=3) quality = models.IntegerField(default=10) age = models.IntegerField(default=0) def __unicode__(self): return self.age class Sheep(Animal): wool = models.IntegerField()
如果您只使用该对象的子类,我强烈建议在Animal上设置abstract选项。这样可以确保不为动物创建表,而仅为绵羊(等)创建表。如果未设置abstract,则将创建Animal表,并给Sheep类提供它自己的表和一个自动的“ animal”字段,这将是Animal模型的外键。