【问题标题】:Object does not support item assignment error对象不支持项目分配错误
【发布时间】:2012-01-22 11:05:57
【问题描述】:

在我的views.py 中,我在保存表单之前分配了值。我以前是这样做的:

projectForm.lat = session_results['lat']
projectForm.lng = session_results['lng']

现在,由于变量列表有点长,我想使用以下循环遍历 session_results(如 Adam here 所述):

for k,v in session_results.iteritems():
    projectForm[k] = v

但是对于循环解决方案,我收到错误 'Project' object does not support item assignment。我很难理解为什么。 Project 是模型类,我用于 ModelForm。

感谢您的帮助!

【问题讨论】:

    标签: python django loops dictionary


    【解决方案1】:

    错误似乎很明显:模型对象不支持项目分配。 MyModel.objects.latest('id')['foo'] = 'bar' 会抛出同样的错误。

    你的模型实例被称为projectForm...

    要在循环中重现您的第一个代码块,您需要使用setattr

    for k,v in session_results.iteritems():
        setattr(projectForm, k, v)
    

    【讨论】:

      【解决方案2】:

      另一种方法是添加 __getitem____setitem__ 函数

      def __getitem__(self, key):
          return getattr(self, key)
      

      您现在可以使用 self[key] 访问。

      【讨论】:

        猜你喜欢
        • 2017-11-18
        • 1970-01-01
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 2015-12-22
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多