В 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)
Вы могли бы справиться с этим крайним случаем относительно чисто.