我正在尝试创建一个 for 循环,用于在 Otree 中创建动态数量的对象,它扩展了 Django(我知道,疯狂的想法,但请耐心等待)。不幸的是,如果您尝试在代码中使用整数,最新版本的 otree 将引发编译时错误。例如,下面的代码:
num_decs = 8
for d in range(1, num_decs + 1):
locals()['dec_r'+str(r)+'_'+str(d)]= models.CharField(choices=[Constants.choice1_name, Constants.choice2_name],widget=widgets.RadioSelectHorizontal(),blank=False,initial='blank')
将抛出以下错误(与以前版本的 Otree 发生的警告相反):
(otree.E111) NonModelFieldAttr: Player has attribute "d", which is not a model field, and will therefore not be saved to the database.
我想解决这个问题的最佳方法是在 for 循环中将 d 声明为 IntegerField 对象,然后使用int () 方法将其转换为 int ,如下所示:
num_decs = models.IntegerField(initial=8)
d = models.IntegerField(default=0)
for d in range(1, num_decs.__int__() + 1):
但是我收到一个错误,即 IntegerField 缺少int () 方法。我应该怎么做才能将 IntegerField 转换为 for 循环的 int?谢谢!