我正在使用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)
尝试在问题类的对象上调用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_____功能,使一切恢复正常。有什么原因导致这个以及如何解决它?
非常感谢答案 0 :(得分:11)
您需要在子类“__init__
方法中的某个位置调用超类”__init__
方法:
def __init__(self, *args, **kwargs):
super(Question, self).__init__(*args, **kwargs)
# your code here
答案 1 :(得分:2)
根据Django models docs,建议不要覆盖模型的__init__
方法。首选使用@classmethod
或自定义管理器。