вот код из моих форм:Джанго Мастера формы 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 потребителя?