Как использовать словарные ключи как выбор в модели? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть много полей выбора, и каждая опция соответствует числу. Этот номер будет использоваться для последующих расчетов.

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

driven_factors = {
    "Education":{
        "A": 1.29,
        "B": 0.98,
        "C": 0.72,
    },
}

и модель выглядит так:

Education_choices= list(driven_factors.get("Education").keys())
Education= models.CharField(max_length=50, choices=Education_choices)

К сожалению, это не работает, потому что Education_choices похоже на ['A', 'B', 'C'] кроме последовательности пар вроде [('A', 'x'), ('B', 'y',...)] Как мне это исправить? Или есть другие подходы, чтобы сделать это?

Редактировать: Если передать Education в список: это будет похоже на

Education = (
    ('A', 1.29),
    ('B', 0.98),
    ('C', 0.72),
)

Однако, как и в случае выбора, это списоктакие пары, как («значение в базе данных», «удобочитаемое имя»). Уместно ли использовать числовое значение в качестве «понятного человеку имени» в смысле дизайна?

1 Ответ

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

Я предлагаю вам сначала преобразовать ваш "Образование" в список кортежей примерно так (взято из https://stackoverflow.com/a/674531/12153266):

education_as_list = [(k, v) for k, v in driven_factors["Education"].iteritems()]

, а затем передать его вашей модели:

Education= models.CharField(max_length=50, choices=education_as_list)
...