快速提问.我正在try 使用变量访问模型的一个字段.

class ExampleModel(models.Model):
      the_field = models.CharField()
      the_field_two = models.CharField()

如何动态访问该字段?我试过了:

model = ExampleModel.objects.get(pk=1)
fieldtoget = 'the_field'
test_var = model[fieldtoget]

但似乎不管用,你知道我该怎么做吗?

Update:人认为我会更新我的问题.我正在try 编写一个函数(作为较大函数的一部分),它不仅可以获取字段的值,还可以从变量fieldname更新它.例如:

model[fieldtoget] = 'yo'
model.save()

在PHP中,您可以使用{}包装器-$model{$fieldtoget}-作为示例,因为动态变量名希望在python中有类似的东西:)

干杯

推荐答案

您可以使用pythons getattr函数来执行此操作.将字段名作为属性传入.

getattr(model, fieldtoget)

因为fieldtoget是一个变量,所以这是动态的.

您可以使用setattr以同样的方式进行设置.

Django相关问答推荐

POST_SAVE接缝有错误

`.objects` 属性在哪里添加到 Django 的 models.Model 类中的实例命名空间?

如果一个应用程序有多个具有相同字段的模型,那么保持 DRY 的最佳实践是什么?

Django 身份验证系统修改

Django RESTful API - django-piston vs. django-tastypie

将 **kwargs 传递给 Django 表单

直接在Django的模板中访问ForeignKey

ManyRelatedManager 不可迭代

Django 管理命令参数

django.request 记录器没有传播到根目录?

重命名 django 元素的简单方法

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

如何在 Django 中配置 X-Frame-Options 以允许 iframe 嵌入一个视图?

django - 如何使翻译工作?

Django ALLOWED_HOSTS IP 范围

如何找到两个 Django 查询集的交集?

具有 2 种语言的 Django 站点

Django - 在设置中使用反向 url 映射

django 如何知道已经运行了哪些迁移?

Django 中的自定义 HTTP 标头