对象没有属性_state

发布于 2021-01-29 14:58:58

我正在开发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)

我应该做什么?

关注者
0
被浏览
54
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,您必须非常小心地重写__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模型的外键。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看