【发布时间】:2019-03-28 03:21:53
【问题描述】:
我正在编写一些 Django/Python 代码。
基本上,我的代码后端会收到一个名为“p”的参数字典。这些值都来自 Django 模型。
当我试图这样覆盖它们时:
p['age']=25
我收到“模型错误”。然而,如果我写:
p.age=25
它工作正常。
我的怀疑是,在内部,选择 #1 尝试为 Django 创建的类的实例设置一个新值,该类的对象要被覆盖,但在内部 Python3 只是简单地将 Django 实例替换为相同的名称('age'),不考虑 Django 创建的先前来源、类型或类。
所有这些都在 RESTful 框架中,并且实际上在测试代码中。因此,即使我是对的,我也不相信它在现实中对我有任何改变。
但是谁能解释为什么对现有 dict 的一种分配有效,而另一种则失败?
【问题讨论】:
-
print(type(p))的结果是什么? -
什么是“模型错误”?请粘贴完整的错误消息。
-
您需要提供完整的代码。什么确切地是p,它来自哪里?如果
p.age有效但p['age']无效,那么 p 绝对不是字典。 -
我说错了,这无疑是问题所在。由于 Django 的“魔法”,p 是一个类,而不是一个 dict(尽管它可能是 dict 类的构建)并且元素本身就是类,而不是
标签: django python-3.x django-rest-framework