Django对象模型——动态设置值

Django object model - dynamically setting value

如何通过遍历 GET 请求中的参数来动态设置 Django 对象模型的值。

因此从请求对象中获取字段名称和值,并使用它来迭代抛出并使用相应的字段更新 Django 模型。

user = request.GET.get('user')
name = request.GET.get('name')
created = request.GET.get('created')
modified = request.GET.get('modified')

obj, created = Obj.objects.get_or_create(user=user, name=name)

if created:

    obj.created = created
    obj.modified = modified

    obj.save(update_fields=['created', 'modified'])

这通常是通过 ModelForm 实现的,它允许您将请求参数映射到模型实例并验证这些参数,然后可选地 save/update 实例。

使用表单可能是最安全的方式,也是最佳实践,但没有理由不能动态迭代 request.GET

for k, v in request.GET.items():
  setattr(obj, k, v)

obj.save(update_fields=[request.GET.keys()])

缺少 kObj 的实际 属性 的检查。类型断言应该在保存时进行,但是表单工作流允许使用统一的标准化方法来检测类型错误并在发生时将它们呈现给客户端。