django - 疯狂的字段数
问题描述
我想为我的 Django 数据库中的每条记录记录 144 多条单独的数据。我想我知道我需要为每个数据点创建一个字段,但它似乎效率不高。有没有更有效的方法来做到这一点。它是一个评分系统,所以我需要能够输入值 1 到 10 以及 x(计为 10)和 m(计为 0)。分数以 3 或 6 个值为一组记录
有什么想法吗
修正案 我已经研究了好几天了,大声说出来似乎很简单,但我在谷歌上找不到任何指导。我决定让这个原则在 6 个分数上起作用,但最终它需要能够存储 144 个分数!我的模型如下所示:
class ScoreSheet(models.Model):
SCORE_ENTRY = (
('0', '0',),
('X','X',),
('10', '10',),
('9', '9',),
('8', '8',),
('7', '7',),
('6', '6',),
('5', '5',),
('4', '4',),
('3', '3',),
('2', '2',),
('1', '1',),
('M', 'M',),
)
Score_1 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
Score_2 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
Score_3 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
Score_4 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
Score_5 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
Score_6 = models.CharField( max_length=2, default=0, blank=True, choices=SCORE_ENTRY)
def convertToNumber(self):
if self.Score_1 == 'X':
self.Score_1 = 10
elif self.Score_1 == 'M':
self.Score_1 = 0
else:
self.Score_1 = int(self.Score_1)
a = int(self.Score_1)
if self.Score_2 == 'X':
self.Score_2 = 10
elif self.Score_2 == 'M':
self.Score_2 = 0
else:
self.Score_2 = int(self.Score_2)
b = int(self.Score_2)
if self.Score_3 == 'X':
self.Score_3 = 10
elif self.Score_3 == 'M':
self.Score_3 = 0
else:
self.Score_3 = int(self.Score_3)
c = int(self.Score_3)
if self.Score_4 == 'X':
self.Score_4 = 10
elif self.Score_4 == 'M':
self.Score_4 = 0
else:
self.Score_4 = int(self.Score_4)
d = int(self.Score_4)
if self.Score_5 == 'X':
self.Score_5 = 10
elif self.Score_5 == 'M':
self.Score_5 = 0
else:
self.Score_5 = int(self.Score_5)
e = int(self.Score_5)
if self.Score_6 == 'X':
self.Score_6 = 10
elif self.Score_6 == 'M':
self.Score_6 = 0
else:
self.Score_6 = int(self.Score_6)
f = int(self.Score_6)
return a + b + c + d + e + f
total = property(convertToNumber)
如您所见,代码中有很多重复。10 分数可以以两种方式记录这一事实无济于事,作为 10 和作为仍然算作 10 的 X,但是因为它更接近目标的中心,所以在抢七的情况下使用。未命中记录为 M 但得分为 0。这就是函数 convertToNumber 的作用。这可行,但不是很优雅,也不能很好地扩展。
我的第二个问题是如何计算 6 个分数的每一端的 X 数。我可以让视图以字典或列表的形式返回分数,但无法计算出如何计算 X 的数量。我已经尝试过 Count 函数并遍历列表,但似乎都不起作用。我无法让 Count 函数查看单个记录的 6 个 Score 字段中的键并识别相似的值,它似乎想要计算单个 Key:value 的多个记录。我已经看过在模型和视图中放置任何计算但没有运气。
如果可能的话,我需要删除重复并计算 X 的数量。
是否有任何人可以提供的提示和技巧?
解决方案
推荐阅读
- java - spring rest Pageable 只发送内容
- python - 如何使用 woo commerce api 和 python 成功创建产品
- angular - 将在应用程序引导之前检索到的数据注入到 AppModule 中导入的模块中
- python - 如何在没有互联网/Anaconda(或任何类似免费软件)的 Windows 10 PC 中安装 pandas?
- git - 在所有分支的文件中查找所有出现的文本
- c# - 在 VTK 中从 2D 标签到 3D 空间中的点绘制一条线
- c# - Ini-parser 不读取整个文件
- javascript - 在每次输入更改时提交表单的最佳实践
- ios - Flutter:尝试将 Flutter 应用程序安装到真实 iOS 设备时出现无法安装“Runner”错误
- windows - gcc 找到但未在 Windows git bash 上执行