相关疑难解决方法(0)

Django:获取模型字段列表?

我已经定义了一个User(最终)继承自的类models.Model.我想获得为此模型定义的所有字段的列表.例如,phone_number = CharField(max_length=20).基本上,我想要检索从Field类继承的任何东西.

我以为我可以通过利用来检索这些inspect.getmembers(model),但它返回的列表不包含任何这些字段.看起来Django已经掌握了这个类,并添加了所有的魔法属性,并删除了实际定义的内容.那么......我怎样才能获得这些领域?它们可能具有为自己的内部目的检索它们的功能吗?

django django-models

172
推荐指数
12
解决办法
13万
查看次数

使用 django F() 对象更新多列

我有一个模型,它以每列一个整数统计数据来存储统计数据。我有一个处理所述统计数据更新的视图,如下所示:

\n\n
class PlayerStats(models.Model):\n    #In game stats - these represent the actual keys sent by the game\n    NumberOfJumps = models.IntegerField(default=0)\n    NumberOfDoubleJumps = models.IntegerField(default=0)\n    NumberOfSilverPickups = models.IntegerField(default=0)\n    NumberOfGoldPickups = models.IntegerField(default=0)\n    NumberOfHealthPickups = models.IntegerField(default=0)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我基本上得到了一个统计字典,我需要将其添加到数据库中存储的当前统计数据中。

\n\n

我真的不想\xc2\xb4t 想要从模型中提取所有数据,然后再次更新它,因为如果可能的话,我想在数据库级别上执行此操作。

\n\n

一位同事建议我使用 django\xc2\xb4s F() 对象,以便将其从视图代码中推出,主要是为了保持线程安全并避免任何 mysql 死锁(统计表可能会通过以下方式不断更新)不同的线程)

\n\n

该字典包含镜像数据库中使用的键,因此目前我\xc2\xb4m 这样做:\n

\n\n
def update_stats(new_stats):\n    player_stats = PlayerStats(user=user, **new_stats)\n    old_stats = player_stats.values()[0]\n    updated_stats = {}\n    for stat in new_stats:\n        if old_stat[stat]:\n            updated_stats[stat] = old_stats[stat] + new_stats[stat]\n    PlayerStats.objects.filter(user=user).update(**updated_stats)\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人知道如何使用 F() 对象来实现这一点吗?

\n

python mysql django

5
推荐指数
1
解决办法
1618
查看次数

标签 统计

django ×2

django-models ×1

mysql ×1

python ×1