Я пытаюсь написать класс ClassChoiceField, класс подкласса Django, который знает, как загружать себя, но мне не очень повезло в том, что вам требуется шаблон. Я не хочу, чтобы классы форм, использующие мое поле, должны были устанавливать что-либо иное, кроме метки и требуемых атрибутов; то есть я не хочу ставить повторяющуюся логику запросов в каждой из моих форм, которые используют это поле.Django-subclassed ModelChoiceField Encapsulation
Так что-то вроде этого, хотя это не работает, потому что параметр queryset не задан в конструкторе поля. Думаю, я мог бы передать «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 сегодня.