Не так, параметры для атрибутов должны быть постоянными по значению, вы не можете вызывать код (даже статический код).
Однако вы можете реализовать что-то с аспектами PostSharp.
Проверьте их:
Просто решено! Кажется, что вам нужно указать варианты как пустой список или список с формой [(a, b)] (список кортежей), чтобы он работал. Я изменил код, чтобы он был похож на
default_timezone = SelectField('Default Time Zone', validators=[DataRequired()],
choices=[(x, x) for x in pytz.common_timezones])
, и это решает проблему.