Это не то, как вы пишете код Django. В любом случае глобальные переменные - плохая идея, но вы не должны использовать их в многопользовательской многопроцессорной среде, такой как Django. У вас сразу же возникнут проблемы с безопасностью потоков;вы не должны этого делать.
Мало того, что в показанном вами коде есть явный глобал, он явно присутствует внутри survey_a0_duplicate
- поскольку details.loadData()
на самом деле ничего не возвращает, но вы потом "получаетесловарь "из analysis.getQuestion
. Вы должны удалить глобальные переменные из обоих мест.
Кроме того, ваш метод сохранения совершенно неверен. У вас есть пользовательские отношения;почему вы перезаписали бы его именем пользователя? Это не только бессмысленно, но и конкретно уничтожает тип поля, которое вы установили. Просто не делай этого. Удалите весь метод сохранения.
Но вам нужно перестать возиться с выбором на уровне класса. Это никогда не сработает. Если вам нужно динамически установить варианты, сделайте это в форме, где вы можете настроить метод __init__
так, чтобы он принимал текущего пользователя и строил варианты на основе этого.