Python 是否可以使用括号引用Django中的字段?

Python 是否可以使用括号引用Django中的字段?,python,django,class,django-models,model,Python,Django,Class,Django Models,Model,您好,我正在尝试查看是否有能力使用括号引用Django中的模型 //model class User(model.Model): firstname = models.charField() //referencing user = User.objects.get(id=1) //original reference user.firstname = "John" // proposed reference user["firstname

您好,我正在尝试查看是否有能力使用括号引用Django中的模型

//model
class User(model.Model):
   firstname = models.charField()

//referencing

    user = User.objects.get(id=1)


   //original reference
    user.firstname = "John"


   // proposed reference
     user["firstname"] = "John"
这是可能的,还是对建议的参考有任何替代方案

您可以在模型中实现一个uu getitem_uuuuuuuuu和uu setitem_uuuuuu,然后调用getattr。。和setattr。。。例如,您可以在模型类中对其进行修补:

但通常情况下,用两种方法来完成一件事并不是一个好主意。正如Python的Zen中所规定的:

应该有一种——最好只有一种——显而易见的方法来做到这一点

如果要根据包含名称的字符串更改属性,可以通过以下方法实现:

setattr(user, 'firstname', 'John')
您可以在模型中实现一个uuu getitem和uu setitem,然后调用getattr。。和setattr。。。例如,您可以在模型类中对其进行修补:

但通常情况下,用两种方法来完成一件事并不是一个好主意。正如Python的Zen中所规定的:

应该有一种——最好只有一种——显而易见的方法来做到这一点

如果要根据包含名称的字符串更改属性,可以通过以下方法实现:

setattr(user, 'firstname', 'John')

如果目标是基于键/值对字典更新对象,则不需要下标符号:

使用setattr: 将属性key设置为value,因此如果key='firstname',则与user.firstname=value相同。 或者直接在数据库中更新对象。假设您的键/值对字典与要更新的字段匹配:
User.objects.filter(id=1).update(**kwargs)
将直接保存对象。例如,如果kwargs是{'firstname':'John'},它只会更新firstname。只需注意过滤器表达式与要更新的正确对象相匹配。
如果目标是基于键/值对字典更新对象,则不需要下标符号:

使用setattr: 将属性key设置为value,因此如果key='firstname',则与user.firstname=value相同。 或者直接在数据库中更新对象。假设您的键/值对字典与要更新的字段匹配:
User.objects.filter(id=1).update(**kwargs)
将直接保存对象。例如,如果kwargs是{'firstname':'John'},它只会更新firstname。只需注意过滤器表达式与要更新的正确对象相匹配。
你为什么要那样?你想用它实现什么?基本上,我是从前端向后端发送信息,每个页面都有多个不同的字段,我想用一个函数@dirkgrotenSo保存这些信息。使用下标符号有什么帮助?如果在键/值之间循环,也可以只使用setattruser,key,value,key='firstname'的值与user.firstname=value相同。为什么要这样?你想用它实现什么?基本上,我是从前端向后端发送信息,每个页面都有多个不同的字段,我想用一个函数@dirkgrotenSo保存这些信息。使用下标符号有什么帮助?如果在键/值之间循环,也可以只使用setattruser,key,value,key='firstname'的值与user.firstname=value相同。