对象没有属性_state
我正在开发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__
以具有非可选参数。记住,每次从一个查询集中获取一个对象时,它将被调用!这是您想要的正确代码:
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模型的外键。