まず、globals()を使用しないでください。私はを知っている私はしないでください。しかし私はカスタムDjango APIを使用しています。コレクションAPIを使用することはできません(私が知る限り)ので、globals()を使用することにかなり悩まされています。入れ子のforループを使用してglobals()のオブジェクトを宣言する
私は、第1ラウンドで1つの選択肢、第2ラウンドで2つの選択肢、第3ラウンドで4つの選択肢を持つゲームをデザインしようとしています(ラウンドごとの選択肢を計算する式はnum_choices = 2^num_rounds)。もちろん、最初のラウンドには1つの選択しかないので、私はそれを静的に宣言しています。しかし、その後のラウンドのために、私は次のコードを使用しようとしています:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/bin/otree", line 11, in <module>
sys.exit(otree_cli())
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/otree/management/cli.py", line 113, in otree_cli
execute_from_command_line(argv)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/otree/management/cli.py", line 133, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/management/__init__.py", line 328, in execute
django.setup()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/Users/_____/exp_econ_test/turn_taking_strategic_match_all_players/models.py", line 209, in <module>
class Player(BasePlayer):
File "/Users/_____/exp_econ_test/turn_taking_strategic_match_all_players/models.py", line 261, in Player
initial=Constants.choice1_name
IndexError: tuple index out of range
I:私は私のDjangoアプリケーションを実行しようとすると、しかし
for i in range(2, NUM_ROUNDS):
dec_num = math.pow(2, i)
for j in range(1, int(dec_num)):
globals()['dec_r{}_{}'.format(i).format(j)] = models.CharField(
choices=list_of_choices,
widget=widgets.RadioSelect(),
blank=False,
initial='blank'
)
を、私は次のようなエラー(トレースバック)を受け取ります私は変数名を宣言する方法と関係があると考えます。私が使用できる代替品はありますか?ありがとう!
このエラーの原因は、どの回線ですか? –
また、グローバル範囲でモデルフィールドを作成しようとしていますか?それは何か役に立つものではないでしょう。実際に達成しようとしていることは何ですか? –
エラーの原因となっている行は明らかに 'initial = 'blank''ですが、削除すると、代わりに空白= Falseからエラーがスローされます。ラウンドナンバーだけを使用してこのメソッドを使用して宣言しても、同じ問題は発生しません。http://stupidpythonideas.blogspot.com.au/2013/05/why-you-dont-want-to-dynamically- create.html – Krabo