Вы не сможете использовать ModelChoiceField для этого.Вам нужно будет вернуться к стандартному ChoiceField и вручную создать список параметров в методе __init__
формы.Что-то вроде:
class PromotionListFilterForm(forms.Form):
promotion_type = forms.ChoiceField(label="Promotion Type", choices=(),
widget=forms.Select(attrs={'class':'selector'}))
....
EXTRA_CHOICES = [
('AP', 'All Promotions'),
('LP', 'Live Promotions'),
('CP', 'Completed Promotions'),
]
def __init__(self, *args, **kwargs):
super(PromotionListFilterForm, self).__init__(*args, **kwargs)
choices = [(pt.id, unicode(pt)) for pt in PromotionType.objects.all()]
choices.extend(EXTRA_CHOICES)
self.fields['promotion_type'].choices = choices
Вам также понадобится сделать что-нибудь умное в методе clean()
формы, чтобы перехватить эти дополнительные опции и правильно с ними справиться.