【问题标题】:Django modify objects using key=value optionsDjango 使用 key=value 选项修改对象
【发布时间】:2021-06-10 20:37:26
【问题描述】:

我正在对 Django 环境中的对象的传入数据修改请求(来自 DataTables 表)进行 http POST 处理。 POST 数据以 key=value 对的形式提供给我。

我遇到的问题是我还没有找到一种方法将它变成我可以使用的东西。 Django 对象和修改是这样完成的:

id = 123
item = Stuff.objects.get(id=id)
item.title = "New Title"
item.save()

我有以下数据属性:

id = 123
attribute = "title" 
value = "New Title"

如何使用它们来修改 Django 对象?

【问题讨论】:

    标签: python django datatables


    【解决方案1】:

    更有效的方法是:

    id = 123
    attribute = 'title'
    value = 'New Title'
    Stuff.objects.filter(id=id).update(**{attribute: value})

    这将防止首先通过查询获取对象,然后对其进行更新。

    如果您仍然需要加载对象,可以使用setattr(…) [Python-doc]

    id = 123
    attribute = 'title'
    value = 'New Title'
    
    item = Stuff.objects.get(id=id)
    setattr(item, attribute, value)
    item.save()

    【讨论】:

      【解决方案2】:

      尝试使用类似的 if 语句

      If attribute = 'title'
          item.title = value
          item.save()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        相关资源
        最近更新 更多