Как получить доступ к понятному человеку имени с помощью get_FOO_display - PullRequest
0 голосов
/ 11 октября 2019

Здравствуйте, у меня есть следующий код, чтобы показать моим участникам текст ответа, который он дал мне на предыдущем сеансе.

    J11 = models.IntegerField(
        choices=[
            [-2, 'Muy moralmente inapropiado'],
            [-1, 'Moralmente inapropiado'],
            [0, 'No aplica'],
            [1, 'Moralmente apropiado'],
            [2, 'Muy moralmente apropiado'],
        ],
        widget=widgets.RadioSelect
    )
    TJ11 = models.CharField(max_length=2, choices=J11)

Когда я пытаюсь доказать этот код, я получаю следующую ошибку:

File "C:\Users\diese\iat\incentivos\models.py", line 140, in <module>
 class Player(BasePlayer):
File "C:\Users\diese\iat\incentivos\models.py", line 216, in Player
 TJ11 = models.CharField(max_length=2, choices=J11)
File "c:\users\diese\appdata\local\programs\python\python37\lib\site-packages\otree\db\models.py",   line 386, in __init__super().__init__(max_length=max_length, **kwargs)
File "c:\users\diese\appdata\local\programs\python\python37\lib\site-packages\otree\db\models.py", line 217, in __init__
fix_choices_arg(kwargs)
File "c:\users\diese\appdata\local\programs\python\python37\lib\site-packages\otree\db\models.py",   line 195, in fix_choices_arg
choices = expand_choice_tuples(choices)
File "c:\users\diese\appdata\local\programs\python\python37\lib\site- packages\otree\common_internal.py", line 118, in expand_choice_tuples
if not isinstance(choices[0], (list, tuple)):
TypeError: 'IntegerField' object is not subscriptable

Что я могу сделать? Кто-то испытывал то же самое?

Заранее спасибо

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете определить варианты выбора до того, как определите свое поле, а затем назначить эти варианты полю позже. Это позволяет назначать эти варианты нескольким полям:

MY_CHOICES = (
    (-2, 'Muy moralmente inapropiado'),
    (-1, 'Moralmente inapropiado'),
    (0, 'No aplica'),
    (1, 'Moralmente apropiado'),
    (2, 'Muy moralmente apropiado'),
)
J11 = models.IntegerField(choices=MY_CHOICES)
TJ12 = models.CharField(max_length=20, choices=MY_CHOICES)
...