У меня проблемы с переносом ранее выбранных элементов в ModelForm в админке.Я хочу использовать виджет forms.CheckboxSelectMultiple , так как это самый простой пользовательский интерфейс в этом сценарии использования.Это работает так далеко, что при сохранении значения сохраняются.Но при редактировании ранее сохраненного элемента значения, ранее сохраненные в этом поле, не отображаются в виджете.
Пример пользовательского интерфейса:
После публикации (редактированиеэтот элемент, возвращает его пустым):
Однако, когда не используется виджет, а обычный CharField, при редактировании элемента он выглядит следующим образом:
Так почему-то значения не представлены виджетом флажка?
Вот моя упрощенная настройка, models.py
POST_TYPES = (
('blog', 'Blog'),
('portfolio', 'Portfolio'),
('beeldbank', 'Beeldbank'),
)
class Module(models.Model):
title = models.CharField(max_length=100, verbose_name='title')
entriesFrom = models.CharField(max_length=100)
def __unicode__(self):
return self.title
forms.py:
class ModuleForm(forms.ModelForm):
entriesFrom = forms.MultipleChoiceField(
choices=POST_TYPES,
widget=CheckboxSelectMultiple,
label="Pull content from",
required=False,
show_hidden_initial=True)
class Meta:
model = Module
def __init__(self, *args, **kwargs):
super(ModuleForm, self).__init__(*args, **kwargs)
if kwargs.has_key('instance'):
instance = kwargs['instance']
self.fields['entriesFrom'].initial = instance.entriesFrom
logging.debug(instance.entriesFrom)
admin.py
class ModuleAdmin(admin.ModelAdmin):
form = ModuleForm
Таким образом, при редактировании ранее сохраненного элемента с выбранным «блогом» отладка на init возвращает мне правильные значения для self.поля ['recordsFrom'] ([u'blog ',]), но они не отражены в флажках (ничего не отображается в качестве выбранного) в администраторе.
edit
обновлен класс ModuleForm для передачи начальных значений, но ничего не заполняется заранее, пока есть несколько значенийв исходном значении ("[u'blog ']").