Задать вопрос
@Pteroz

Python django ошибка валидации формы при выполнении среза queryset. Что не так?

Есть следующий класс формы:

class AddressRegistrationForm(forms.ModelForm):
    class Meta:
        model = AddressRegistration
        fields = ['address']

    def __init__(self, *args, **kwargs):
        super(AddressRegistrationForm, self).__init__(*args, **kwargs)
        search_data = kwargs['initial']['search_data']
        self.fields['address'].queryset = Address.objects.filter(
            street__icontains=search_data['street'],
            city__icontains=search_data['city'],
        )

        if len(self.fields['address'].queryset) > 0:
            self.fields['address'].initial = self.fields['address'].queryset[0]


Выборка fields['address'].queryset осуществляется правильно и таком виде все работает. Но если добавить выполнение среза в строку:

self.fields['address'].queryset = Address.objects.filter(
            street__icontains=search_data['street'],
            city__icontains=search_data['city'],
        )[0:3]


При валидации формы пишет:

Выберите корректный вариант. Вашего варианта нет среди допустимых значений.

Количество элементов среза, переопределение cleaned_data, clean - ничего не работает. POST запрос уходит корректный, т.е. там просто id объекта Address и токен, также как и при работе без среза. Что может быть не так? Django 4.1
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 10:04
50000 руб./за проект
18 янв. 2025, в 09:18
5500 руб./за проект
18 янв. 2025, в 07:20
50000 руб./за проект