在django中,模型上的\uuuu init\uuuuuu函数导致属性错误,无法保存到数据库

在django中,模型上的\uuuu init\uuuuuu函数导致属性错误,无法保存到数据库,django,Django,我正在使用django和一个模型定义,例如 class Question(models.Model): title = models.CharField(max_length=100) description = models.TextField() order = models.IntegerField() def __init__(self, *args, **kwargs): self.title = kwargs.get('title',

我正在使用django和一个模型定义,例如

class Question(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    order = models.IntegerField()

    def __init__(self, *args, **kwargs):
        self.title = kwargs.get('title','Default Title')
        self.description = kwargs.get('description', 'DefDescription')
        self.order = kwargs.get('order', 0)
试图对question类的对象调用save(),会导致shell以

/django/db/utils.py", line 133, in _route_db
    return hints['instance']._state.db or DEFAULT_DB_ALIAS
AttributeError: 'Question' object has no attribute '_state'
但是,删除________; init函数会使一切恢复正常。你知道是什么原因造成的,以及如何解决吗


非常感谢

您需要在子类中的某个点调用超类“
\uuuuu init\uuuu
方法”
\uuu init\uuu
方法:

def __init__(self, *args, **kwargs):
    super(Question, self).__init__(*args, **kwargs)
    # your code here

根据,不建议覆盖模型的
\uuuuu init\uuuu
方法。使用
@classmethod
或自定义管理器是首选。

人们应该注意的是,在为模型分配任何字段之前,需要调用super。另外,在指定字段后,似乎没有必要保存模型