如何使用dict更新对象的成员?

Nic*_*sta 11 python django

我正在编写一个执行各种功能的Django应用程序,包括通过URL插入或更新新记录到数据库中.

因此,一些内部应用程序会发送请求/import/?a=1&b=2&c=3,例如.在视图中,我想创建一个新对象,foo = Foo()并将成员foo设置为request.GET字典中的数据.

这是我现在正在做的事情:

  1. 请求已发送至 /import/?a=1&b=2&c=3
  2. View创建新对象: foo = Foo()
  3. 对象随数据更新.

这是我到目前为止所得到的:

foo.a = request['a']
foo.b = request['b']
foo.c = request['c']
Run Code Online (Sandbox Code Playgroud)

显然这很乏味且容易出错.URL中的数据与对象的成员具有完全相同的名称,因此它是一个简单的1对1映射.

理想情况下,我希望能够做到这样的事情:

foo = Foo()
foo.update(request.GET)
Run Code Online (Sandbox Code Playgroud)

或者那种效果.

谢谢!

Ant*_*sma 19

您可以使用setattr函数动态设置属性:

for key,value in request.GET.items():
    setattr(foo, key, value)
Run Code Online (Sandbox Code Playgroud)