2015-05-28 5 views
0

Я пытаюсь сохранить выбранные пользователем параметры (параметры), выбранные пользователем в базе данных, и заполнить (проверьте/выберите) то же самое, используя данные, сохраненные в базе данных.Django: Не удалось установить флажок с помощью MultipleChoiceField с CheckboxSelectMultiple

Модель:

class ScheduledEvent(models.Model): 

event_id   = models.IntegerField() 
project_id   = models.ForeignKey(Project, db_column = 'project_id') 
start_date   = models.DateTimeField(null = False, default = timezone.now) 
end_date   = models.DateTimeField(null = False, default = timezone.now) 
next_scheduled_date = models.DateTimeField(default = timezone.now) 
include_week_day = models.CharField(max_length=200) 
include_month_day = models.CharField(max_length=200) 

Остальной код:

weekdays=(('Mon',"Monday"), 
     ('Tue','Tuesday'), 
     ('Wed','Wednesday'), 
     ('Thr','Thrusday'), 
     ('Fri','Friday'), 
     ('Sat','Saturday'), 
     ('Sun','Sunday')) 


class CheckBoxdays(forms.ModelForm): 
    model = ScheduledEvent 
    included_week_day = forms.MultipleChoiceField(choices=weekdays, widget=forms.CheckboxSelectMultiple) 

Параметры становятся сохраняются в базе данных, но выбор (варианты) не получает заселены из данных, хранящихся в базе данных.

Но следующий код работает правильно:

weekdays=(('1',"Monday"), 
     ('2','Tuesday'), 
     ('3','Wednesday'), 
     ('4','Thrusday'), 
     ('5','Friday'), 
     ('6','Saturday'), 
     ('7','Sunday')) 

class CheckBoxdays(forms.ModelForm): 
    model = ScheduledEvent 
    include_week_day = forms.MultipleChoiceField(choices=weekdays, widget=forms.CheckboxSelectMultiple) 

Параметры заполняются при первом значение в выборе кортеже быть одним символом. Я делаю что-то неправильно здесь?

+1

Что ваша модель выглядит? –

+0

Мне было интересно, почему бы вам не указать варианты в своей модели. – Wtower

+0

@Wtower: Я тоже это пробовал, но получил ошибку при сохранении опций: Выберите действительный выбор. ['Wed', 'Thr', 'Fri'] не является одним из доступных вариантов. – ashu

ответ

0

Вы должны использовать версию модели MultipleChoiceFile, чтобы делать то, что вы хотите сделать:

class CheckBoxdays(forms.ModelForm): 
    model = ScheduledEvent 
    include_week_day = forms.ModelMultipleChoiceField(choices=weekdays, widget=forms.CheckboxSelectMultiple) 
+0

Что именно вы подразумеваете под «Модельной версией MultipleChoiceField»? Можете ли вы рассказать об этом? – ashu

+0

вы должны использовать класс ModelMultipleChoiceField, а не MultipleChoiceField. –

+0

Я получаю эту ошибку: объект ModelMultipleChoiceField не имеет атрибута 'iterator', когда я пытаюсь инициализировать поля формы со значениями, сохраненными в базе данных. – ashu

Смежные вопросы