Django 动态访问模型属性

Ali*_*ian 1 django django-models

我对 Django 很陌生,所以这个问题可能非常基本。

我有一个名为 的模型UserScores,其中包含 16 个不同的分数属性,每个属性代表基于他/她玩过的游戏的用户分数。

当用户玩游戏并完成游戏时,他在该游戏中获得的分数应添加到他/她的 UserScores 对象中的相关属性中。所以代码如下所示:

if game_name == "game_1":
  self.game1_score += score
elif game_name == "game_2":
  self.game2_score += score
...
Run Code Online (Sandbox Code Playgroud)

在 php 中我曾经运行这样的代码:

obj.{game_name} += score
Run Code Online (Sandbox Code Playgroud)

所以无论游戏名称是什么,都编辑了正确的属性,

现在我的问题是,

是否有动态方法来访问 Django 模型对象的属性?

Win*_*ton 6

您可以使用 getattr/setattr 来实现您想要的。例如,设置字段值:

old_value = getattr(obj, field_name)
setattr(obj, field_name, old_value + score)
Run Code Online (Sandbox Code Playgroud)