В Django forms.ModelChoiceField HOWTO ограничить отображаемые варианты, но установить одно из ограниченных значений во время очистки

У меня есть настраиваемое поле, которое подклассы ModelMultipleChoiceField. Я предоставляю варианты для отображения с помощью параметра queryset. Этот набор запросов исключает определенные значения. Моя проблема возникает, когда во время операции очистки для некоторых рабочих процессов мне нужно выбрать опцию, которая изначально была исключена с помощью набора запросов. Когда я пытаюсь сохранить это значение, django отказывается сохранять его, говоря, что это недопустимый параметр. При поиске чистого метода для ModelMultipleChoiceField я обнаружил, что он проверяет, находится ли указанное "значение" в исходном наборе запросов, что вызывает мою дилемму.

Я хотел знать, возможно ли обойти эту проблему без каких-либо серьезных взломов.

1 ответ

Решение

django/forms/models.py:1011 имеет это:

qs = self.queryset.filter(**{'%s__in' % key: value})

Таким образом, кажется, что если вы переопределите метод clean() вашего пользовательского поля, чтобы изменить self.queryset по мере необходимости перед вызовом super(MyField, self).clean(value)Вы могли бы справиться с этим крайним случаем относительно чисто.

Другие вопросы по тегам