python - 如何将字典键与模型 ID 匹配

标签 python django django-models

我有一个类似于下面的列表: my_list = ['1', '2', '1', '3', '2', '1']

这些是选票,每个选票都对应于此模型中的一个 id,其中包含民意调查的选择:

class Choice(models.Model):
    question = models.ForeignKey(Poll, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)

我正在使用 Counter计算选票,我最终得到了这个:

>>>votes = Counter(my_list)
>>>print(votes)
Counter({'1': 3, '2': 2, '3': 1})

此字典中的每个键对应于 Choice 模型中的一个 ID。如何用每个 ID 对应的 choice_text 替换字典的键名? 我想最终得到一个如下所示的字典:

{'id=1 的choice_text':3, 'id=2 的choice_text':2, 'id=3 的choice_text':1}

编辑:另外,如果我想对已有的列表执行相同的程序怎么办。

my_list = ['1', '2', '1', '3', '2', '1']

像这样:

another_list = ['id=1 的选择文本', 'id=2 的选择文本', 'id=1 的选择文本', 'id=3 的选择文本', 'id=2 的选择文本', ' id=1'的选择文本]

最佳答案

获取您选择的名称:

choice_text = Choice.objects.get(pk=choice_id)

因此您必须遍历您的 ID,获取 choice_text 并使用:

投票[choice_text] = votes.pop(choice_id) 将您的键重命名为相应的选择名称。

关于python - 如何将字典键与模型 ID 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062760/

相关文章:

python - 在Django中的html模式中加载动态数据

python - Django 在重定向时找不到模式名称

django - 工厂男孩错误 : ValueError: save() prohibited to prevent data loss due to unsaved related object

Django:精确查找的QuerySet值必须使用切片限制为一个结果

mysql - id 主键是否必须在从检查数据库生成的 Django 模型中针对现有数据库显式定义?

python - 如何在 Ubuntu 20.04 上为 Python 3.9 安装 pip

python - 使用存储在 python 字典中的属性添加 RDF 三元组

python - 无法使用 strptime 解析日期时间

python - 在 Nose 测试类中定义的固定装置是否在函数之间被调用?

javascript - 如果 django 表单提交失败则运行 javascript