Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Почему слетают выбранные значения в самописном мультиселекте в админке при обновлении страницы? [RSS Feed]

#1 Июнь 22, 2019 04:58:19

m0nte-cr1st0
Зарегистрирован: 2019-02-03
Сообщения: 49
Репутация: +  2  -
Профиль   Отправить e-mail  

Почему слетают выбранные значения в самописном мультиселекте в админке при обновлении страницы?

Я написал форму мультиселекта для админки. Выбранные данные сохраняются в бд, но по какой-то причине после обновления страницы они не отображаются, как выбранные (нет selected у этих значений). Соответственно когда я снова пытаюсь сохранить объект, получаю ошибку, что данные не выбраны (так как поля обязательное). Такое ощущение, что при обновлении страницы селекты просто слетают.

Использую django-jet для админки

В чем может быть проблема?

Поле регистрация



models.py

     registration = models.CharField(_('registration'), max_length=255)

forms.py

     class ConditionAdminForm(forms.ModelForm):
        REGISTRATION_CHOICES= (
            ('Any', _('Any')),
            ('Constant', _('Constant')),
            ('Temporary', _('Temporary')),
        )
    
        registration = forms.MultipleChoiceField(choices = REGISTRATION_CHOICES, label=_("registration form"))
    
        def clean_registration(self):
            registration = self.cleaned_data['registration']
            if not registration:
                raise forms.ValidationError("...")
    
            registration = ', '.join(registration)
            return registration
    
        class Meta:
            model = Condition
            fields = '__all__'

admin.py

     class ConditionInlineAdmin(admin.StackedInline):
        model = Condition
        form = ConditionAdminForm

отрендеренный admin html

     <div class="form-row field-registration">
      <div>
        <label class="required" for="id_condition_set-0-registration">registration:</label>
        <select multiple="" id="id_condition_set-0-registration" name="condition_set-0-registration" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
          <option value="Any">Any</option>
          <option value="Constant">Constant</option>
          <option value="Temporary">Temporary</option>
        </select>
        <span class="select2 select2-container select2-container--jet" dir="ltr" style="width: auto;">
          <span class="selection">
            <span class="select2-selection select2-selection--multiple" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" tabindex="0">
              <ul class="select2-selection__rendered">
                <li class="select2-search select2-search--inline">
                  <input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" placeholder="" style="width: 0.75em;">
                </li>
              </ul>
            </span>
          </span>
          <span class="dropdown-wrapper" aria-hidden="true"></span>
        </span>
      </div>
    </div>

Отредактировано m0nte-cr1st0 (Июнь 22, 2019 04:59:04)

Офлайн

#2 Июнь 22, 2019 14:47:55

m0nte-cr1st0
Зарегистрирован: 2019-02-03
Сообщения: 49
Репутация: +  2  -
Профиль   Отправить e-mail  

Почему слетают выбранные значения в самописном мультиселекте в админке при обновлении страницы?

Решено

     def __init__(self, *args, **kwargs):
        super(ConditionAdminForm, self).__init__(*args, **kwargs)
        obj = kwargs.get('instance')
        if obj:
            initial = [i for i in obj.registration.split(', ')]
            self.initial['registration'] = initial

Офлайн

  • Начало
  • » Django
  • » Почему слетают выбранные значения в самописном мультиселекте в админке при обновлении страницы?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version