Python Django异常DoesNotExist

Python Django异常DoesNotExist,python,django,exception,properties,model,Python,Django,Exception,Properties,Model,我有一个模型,它同时具有Django的模型字段和python属性。例: Edit2:使用实际型号更新(对不起,葡萄牙语名称) 如果在调用save()方法之前(在创建模型的记录期间)尝试调用属性“Vars”,django会不断引发DoesNotExist异常,即使“Vars”属性不是django模型的一部分 有人能解释为什么会这样吗 编辑:根据要求: Django跟踪: 回溯: 文件 “/home/gleal/cbengine/local/lib/python2.7/site packages/d

我有一个模型,它同时具有Django的模型字段和python属性。例:

Edit2:使用实际型号更新(对不起,葡萄牙语名称)

如果在调用save()方法之前(在创建模型的记录期间)尝试调用属性“Vars”,django会不断引发DoesNotExist异常,即使“Vars”属性不是django模型的一部分

有人能解释为什么会这样吗

编辑:根据要求:

Django跟踪:

回溯:

文件 “/home/gleal/cbengine/local/lib/python2.7/site packages/django/core/handlers/base.py” 在得到答复时 111响应=回调(请求,*回调参数,**回调参数)

req中的文件“/home/gleal/cbengine/engine/wsgi/openshift/views.py” 48返回浏览(请求、应用、模型、变量、错误)

文件 “/home/gleal/cbengine/engine/wsgi/openshift/。/openshift/subview/browse.py” 在浏览 32自定义变量['TableColspan']=len(obj.vars.get('VIEW\u ORDER',{}))

文件 中的“/home/gleal/cbengine/engine/wsgi/openshift/。/openshift/models.py” 瓦尔斯 40curr\u vals[field.name]=getattr(self,field.name)文件 “/home/gleal/cbengine/local/lib/python2.7/site packages/django/db/models/fields/related.py” 在中获取 343将self.field.rel.to.DoesNotExist提升

异常类型:DoesNotExist位于/estoque/estoque/browse/Exception 价值:


刚刚发现这个大坏蛋是
@属性
方法
Vars
上的装饰者

它让django尝试从类的实例获取值,在某些情况下,它可能会触发django的ORM对DB的一些查询(基本上,在我尝试从当前实例获取值的情况下)

我将@property改为@classmethod,一切都很顺利。像这样:

#before
@property
def Vars(self):
    return {'field_labels': self._field_labels, 'view_order': self._view_order}

#after
@classmethod
def Vars(self):
    return {'field_labels': self._field_labels, 'view_order': self._view_order}

感谢所有试图帮助你的人

为什么你有这个属性?你确定我的变量没有抛出名称错误,不是DoesNotExist吗?你能展示你用来生成错误和输出的代码吗?@BurhanKhalid是一个“helper”属性,它公开了其他与django模型没有直接关系的东西,或者是补充django模型属性的东西。你能发布你的属性的完整代码和完整的回溯吗?@SindriGuðmundsson是的,我敢肯定。代码只是“获取模型(我的应用程序,我的模型)()。我的变量”
#before
@property
def Vars(self):
    return {'field_labels': self._field_labels, 'view_order': self._view_order}

#after
@classmethod
def Vars(self):
    return {'field_labels': self._field_labels, 'view_order': self._view_order}