Я написал новую функцию в подпапке, и мой проект django, который работал нормально, теперь выдает следующую ошибку:
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\urls.py", line 4, in <module>
from .views import (
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\views.py", line 15, in <module>
from .forms import IndicatorForm, SearchForIndicatorMetaData
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\forms.py", line 24, in <module>
class IndicatorForm(forms.ModelForm):
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\forms\models.py", line 252, in __new__
opts.field_classes)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\forms\models.py", line 166, in fields_for_model
formfield = f.formfield(**kwargs)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 1873, in formfield
return super(IntegerField, self).formfield(**defaults)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 872, in formfield
defaults['choices'] = self.get_choices(include_blank=include_blank)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 802, in get_choices
for choice, __ in choices:
ValueError: too many values to unpack (expected 2)
Подобные вопросы задавались в прошлом, и всегда было так, чтокто-то использовал словарь, а не итерацию, чтобы определить выбор.Я не сделал этого, но я получаю ту же ошибку.Похоже, трассировка кажется, что проблема где-то в моем forms.py
.Мой forms.py
ниже:
from django import forms
from .models import Indicator
def get_indicator_ids():
ids = []
indicator_objects = Indicator.objects.all()
for indicator in indicator_objects:
ids.append(indicator.id)
return ids
class IndicatorDropDown(forms.Form):
def __init__(self, *args, **kwargs):
super(IndicatorDropDown, self).__init__(*args, **kwargs)
self.fields['indicators'] = forms.ChoiceField(choices=get_indicator_ids())
class IndicatorForm(forms.ModelForm):
class Meta:
model = Indicator
fields = '__all__'
exclude = ['creator']
class SearchForIndicatorMetaData(forms.Form):
search_for_indicator_metadata = forms.IntegerField(label='Search for metadata by ID', max_value=999999999)
forms.py
вызывает модель Indicator
, однако это не изменилось с момента последнего коммита, где она работала.Все мои поля выбора являются кортежами, и поэтому не должны выдавать эту ошибку.Любой совет будет принят во внимание.
Правка - добавление модели также
class Indicator(models.Model):
time_periods = (
get_time_periods()
)
months = (
get_months()
)
calculations = (
get_calculations()
)
sex_ids = (
get_all_sexes()
)
age_ids = (
get_all_ages()
)
operands = (
('+', '+'),
('-', '-'),
('*', '*'),
('/', '/')
)
salt_options = get_salt_options_as_tuple()
qof_data_choices = (
('qof-{}-prev-ach-exc-ms-prac.xlsx', 'Musculoskeletal group'),
('qof-{}-prev-ach-exc-neu-prac.xlsx', 'Mental health and neurology group'),
('qof-{}-prev-ach-exc-fer-obs-gyn-prac.xlsx', 'Fertility, obstetrics and gynaecology group'),
('qof-{}-prev-ach-exc-hd-prac.xlsx', 'High dependency and other long term conditions group'),
('qof-{}-prev-ach-exc-ls-prac.xlsx', 'Lifestyle group'),
('qof-{}-prev-ach-exc-resp-prac.xlsx', 'Respiratory group'),
('qof-{}-prev-ach-exc-cv-prac.xlsx', 'Cardiovascular group'),
('qof-{}-prac-dom-ach.xlsx', 'Achievement group'),
('qof-{}-prac-dom-exc.xlsx', 'Exclusion group'),
)
id = models.IntegerField(unique=True, primary_key=True)
source_data_family = models.ForeignKey(IndicatorFamily, on_delete=models.CASCADE, blank=True)
qof_source_data = models.CharField(max_length=100, choices=qof_data_choices, blank=True)
source_sheet = models.CharField(max_length=200, blank=True)
year_range = models.CharField(max_length=2, blank=True)
time_period = models.CharField(max_length=30, choices=time_periods, blank=True)
ageId = models.IntegerField(choices=age_ids, blank=True)
sexId = models.IntegerField(choices=sex_ids)
calculation = models.CharField(max_length=30, choices=calculations, blank=True)
rate = models.IntegerField(blank=True, null=True)
value_declared_independently = models.BooleanField(default=False)
value_column_name = models.CharField(max_length=200, blank=True)
numerator_starts_with_financial_year = models.BooleanField(default=False)
numerator = models.CharField(max_length=200, blank=True)
salt_numerator = models.CharField(max_length=200, blank=True, choices=salt_options)
salt_numerator_operand = models.CharField(max_length=2, choices=operands, blank=True)
salt_numerator_2 = models.CharField(max_length=200, blank=True, choices=salt_options)
numerator_minus_not_caseness = models.BooleanField(default=False)
iapt_q_m_variable_type = models.CharField(max_length=200, blank=True)
iapt_q_m_variable_a = models.CharField(max_length=200, blank=True)
iapt_q_m_variable_b = models.CharField(max_length=200, blank=True)
iapt_q_m_variable_type_denominator = models.CharField(max_length=200, blank=True)
iapt_q_m_variable_a_denominator = models.CharField(max_length=200, blank=True)
iapt_q_m_variable_b_denominator = models.CharField(max_length=200, blank=True)
denominator_starts_with_financial_year = models.BooleanField(default=False)
denominator = models.CharField(max_length=200, blank=True)
denominator_minus_not_caseness = models.BooleanField(default=False)
denominator_source_sheet = models.CharField(max_length=200, blank=True)
salt_denominator = models.CharField(max_length=200, blank=True, choices=salt_options)
salt_denominator_operand = models.CharField(max_length=2, choices=operands, blank=True)
salt_denominator_2 = models.CharField(max_length=200, blank=True, choices=salt_options)
add_denominator_column = models.CharField(max_length=200, blank=True)
additional_denominator_column_starts_with_financial_year = models.BooleanField(default=False)
adjust_denominator_for_person_years = models.BooleanField(default=False)
ccg_over_18_population_as_denominator = models.BooleanField(default=False)
ccg_total_population_as_denominator = models.BooleanField(default=False)
is_count = models.BooleanField(default=False)
is_percentage = models.BooleanField(default=False)
ccg_to_stp = models.BooleanField(default=False)
gp_to_upper_tier_la = models.BooleanField(default=False)
ccg_lookup_required = models.BooleanField(default=False)
drop_depression = models.BooleanField(default=False)
count_non_nulls = models.BooleanField(default=False)
non_null_columns = models.CharField(max_length=300, blank=True)
drop_eng_row = models.BooleanField(default=False)
months_to_quarter = models.BooleanField(default=False)
snapshot = models.BooleanField(default=False)
asterisk_as_two = models.BooleanField(default=False)
creator = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
denominator_2_equals_denominator = models.BooleanField(default=False)
do_not_suppress_small_numbers = models.BooleanField(default=False)
numerator_is_num_minus_denom = models.BooleanField(default=False)
stp_is_average_not_sum = models.BooleanField(default=False)
mental_health_trust_geographies = models.BooleanField(default=False)
filter_by = models.CharField(max_length=200, blank=True)
# ld_denominator_source_file = models.CharField(max_length=100, choices=qof_data_choices, blank=True)
def __str__(self):
return str(self.id)
Правка 2 - обновленная трассировка:
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\urls.py", line 4, in <module>
from .views import (
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\views.py", line 15, in <module>
from .forms import IndicatorForm, SearchForIndicatorMetaData
File "C:\Users\me\PycharmProjects\IndicatorAnalyserWebapp\Analyser\Indicators\forms.py", line 19, in <module>
class IndicatorForm(forms.ModelForm):
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\forms\models.py", line 252, in __new__
opts.field_classes)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\forms\models.py", line 166, in fields_for_model
formfield = f.formfield(**kwargs)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 1873, in formfield
return super(IntegerField, self).formfield(**defaults)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 872, in formfield
defaults['choices'] = self.get_choices(include_blank=include_blank)
File "C:\Users\me\AppData\Local\Continuum\anaconda37\envs\py34\lib\site-packages\django\db\models\fields\__init__.py", line 802, in get_choices
for choice, __ in choices:
ValueError: too many values to unpack (expected 2)
Правка 3 - Добавлены примеры функций, вызываемых из модели
def get_months():
months = (
('jan', 'January'),
('feb', 'February'),
('mar', 'March'),
('apr', 'April'),
('may', 'May'),
('jun', 'June'),
('jul', 'July'),
('aug', 'August'),
('sep', 'September'),
('oct', 'October'),
('nov', 'November'),
('dec', 'December')
)
return months
def get_time_periods():
time_periods = (
('monthly', 'Monthly'),
('quarterly', 'Quarterly'),
('annual', 'Annual')
)
return time_periods
def get_calculations():
calcs = (
('WILSON', 'Wilson'),
('BYAR', 'Byar')
)
return calcs