2013-10-12 6 views
0

вот код из моих форм:Джанго Мастера формы Filtering ChoiceField

class ServiceChoiceForm(forms.ModelForm): 

    def activated_services(self): 
    """ 
     get the activated services added from the administrator 
    """ 
    all_datas =() 
    data =() 

     services = ServicesActivated.objects.filter(status=1) 
     for class_name in services: 
      data = (class_name, class_name.name.rsplit('Service', 1)[1]) 
      all_datas = (data,) + all_datas 
     return all_datas 


class ProviderForm(ServiceChoiceForm): 

    provider = forms.ChoiceField() 
    def __init__(self, *args, **kwargs): 
     super(ProviderForm, self).__init__(*args, **kwargs) 
     self.fields['provider'].choices = self.activated_services()     

    class Meta: 
     model = TriggerService 
     fields = ('provider',) 


class ConsummerForm(ServiceChoiceForm): 

    consummer = forms.ChoiceField() 

    class Meta: 
     model = TriggerService 
     fields = ('consummer',) 

в моем views.py в get_form(), на шаге 0 я загрузить данные с моим ProviderForm, как мы можем видеть выше, то на шаг-I используйте следующий код для загрузки данных в моей ChoiceField и попытаться отфильтровать данные со значением я использую на шаге 0:

def get_form(self, step=None, data=None, files=None): 
    if step == '2': 
     data = self.get_cleaned_data_for_step('0') 
     consummer = ServicesActivated.objects.filter(status=1) 
     consummer = consummer.exclude(name__exact=data['provider']) 
     form = ConsummerForm(instance=consummer) 

, но когда я получить доступ к ConsummerForm я получаю ошибку:

'QuerySet' object has no attribute '_meta' 

И Похоже, что для Django я стараюсь обрабатывать несколько моделей

Так как я могу сделать, чтобы фильтровать ДАННЫЕ моего choicefield потребителя?

ответ

Смежные вопросы