Python在尝试更新模型中不可用的属性时不会引发异常

问题描述:

使用python 4.3和django 1.0.2。当我尝试更新模型中不可用的字段时,不会引发异常。
Eg x = Mymodel.objects.get(att1='abcd') x.notvalid <---- raises an exception x.notvalid = 'xxx' <--- not raising exceptionPython在尝试更新模型中不可用的属性时不会引发异常

有人能解释这是如何工作?

如果你做一个任务:

x.notvalid = 'xxx' 

你只是分配给xxxx.notvalid。它仅仅是蟒蛇,就像:

some_var = 'xxx' 

只有你在做它的对象x上。在这种情况下,x是一个Django模型,但它仍然是一个python对象,您可以将新属性分配给一个python对象。

如果您在分配任何内容之前尝试访问x.notvalid,它将在逻辑上抛出一个豁免,因为x.notvalid尚未分配。

+0

谢谢你rednaw,但作为一个特定模型的对象,为什么验证不到位?这是如何预计工作? – user1002477

+0

是的。正如我所说,最终它只是一个Python对象。 Django只对您定义为字段的属性进行验证。 Django让您可以*使用Python的所有方面,同时帮助您创建模型。 – rednaw

+0

好的,非常感谢。 – user1002477