В Django forms.ModelChoiceField HOWTO ограничить отображаемые варианты, но установить одно из ограниченных значений во время очистки - PullRequest
1 голос
/ 09 июля 2011

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

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

1 Ответ

2 голосов
/ 09 июля 2011

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

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

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

...