【发布时间】:2012-01-06 17:50:42
【问题描述】:
你好 Stackoverflow 的人,
我有一个相当单调的模型定义,它包括从 1 到 50 的 bin 字段。
为了概念验证,我是手工编写的,但必须有更好的方法来自动化模型定义并保持代码整洁。
到目前为止,我是按照以下方式完成的:
class Bins(models.Model):
p1 = models.DecimalField(_('bin 1'), max_digits=6, decimal_places=2)
p2 = models.DecimalField(_('bin 2'), max_digits=6, decimal_places=2)
p3 = models.DecimalField(_('bin 3'), max_digits=6, decimal_places=2)
...
p50 = ...
在Django wiki上,我找到了动态模型定义的摘要,但它似乎不允许定义中的for循环:
我已经尝试了下面的代码,但我收到一条错误消息,指出 MAX_BIN = 2 是无效的语法。 我了解无法像我尝试的那样迭代该字段的错误。
Bins = type('Bins', (models.Model,), {
MAX_BIN = 50
for i in range(MAX_BIN):
name_sects = ["p", str(i)]
"".join(name_sects): model.DecimalField(_("".join([bin ', str(i)])),
max_digits=6, decimal_places=2)
})
这样的动态类定义一般可行吗? 如果是这样,定义类的最佳方法是什么?
感谢您的帮助!
【问题讨论】:
-
如何创建一个新的
Bin模型,它具有 # 并指向Bins模型? -
这个模块适用于动态模型pypi.python.org/pypi/django-dynamo
标签: django dynamic model field