Я пытаюсь написать класс ModelChoiceField с подклассом Django, который знает, как загрузить себя, но мне не очень повезло, когда я выяснил требуемый шаблон. Я не хочу, чтобы классы форм, использующие мое поле, устанавливали что-либо кроме метки и обязательных атрибутов; то есть я не хочу помещать повторяющуюся логику набора запросов в каждую из моих форм, использующих это поле.
Так что-то вроде этого, хотя это не работает, потому что параметр набора запросов не установлен в конструкторе поля. Думаю, я мог бы передать "queryset = Test.object.none ()", но я бы предпочел, чтобы мои формы тоже не помещали этот фиктивный код там.
class MyForm(forms.Form):
c = MyModelChoiceField(label='Test', required=False)
class MyModelChoiceField(forms.ModelChoiceField):
def __init__(self, *args, **kwargs):
super(MyModelChoiceField, self).__init__(*args, **kwargs)
self.queryset = Test.objects.filter(id__gt=1)
Есть ли примеры того, как этого добиться? Я уверен, что есть - я просто не могу найти их сегодня с Google.