MultipleChoiceField не показывает сохраненные значения в Django Admin - PullRequest
3 голосов
/ 28 февраля 2012

Как вы получаете MultipleChoiceField () для правильной загрузки начальных значений?

У меня есть модель Django с CharField, которую я отображаю в admin как MultipleChoiceField (), потому что я хочу ограничить еезначение для одного или нескольких конкретных вариантов.

Мой код выглядит примерно так:

class MyModelInlineForm(ModelForm):

    my_text_field = forms.MultipleChoiceField(required=False)

    def __init__(self, *args, **kwargs):
        super(MyModelInlineForm, self).__init__(*args, **kwargs)

        self.fields['my_text_field'].choices = get_choices(self.instance)

        if self.instance:
            self.fields['my_text_field'].initial = self.instance.my_text_field

class MyModelInline(admin.TabularInline):
    model = MyModel
    form = MyModelInlineForm
    extra = 0

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

На основании некоторых похожих вопросы , я попытался явно установить значение initial для сохраненного поля моей модели, но это, похоже, не дало результата.

Что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 29 февраля 2012

Вам нужно установить значение в форме initial (словарь), а не в поле:

if self.instance:
    self.initial['my_text_field'] = self.instance.my_text_field
0 голосов
/ 06 декабря 2018

Вам необходимо установить значение в начальной букве формы (словарь)

def __init__(self, *args, **kwargs):
    super(MyModelInlineForm, self).__init__(*args, **kwargs)
    self.initial['my_text_field'] = eval(self.initial['my_text_field'])
...