首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django FormWizard滤波ChoiceField

Django FormWizard滤波ChoiceField
EN

Stack Overflow用户
提问于 2013-10-12 16:01:38
回答 1查看 246关注 0票数 0

这是我的表格代码:

代码语言:javascript
复制
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 in get_form()中,在步骤0中,我用我的ProviderForm加载数据,就像我们在上面看到的那样,然后在第2步,我使用下面的代码在get_form()中加载数据,并尝试使用步骤0使用的值来过滤数据:

代码语言:javascript
复制
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时,我得到了错误:

代码语言:javascript
复制
'QuerySet' object has no attribute '_meta'

对于Django来说,我试图处理多个模型

那么,我如何过滤我的选择领域消费者的数据呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-12 16:23:24

代码语言:javascript
复制
consummer = ServicesActivated.objects.filter(status=1)
consummer = consummer.exclude(name__exact=data['provider'])
form = ConsummerForm(instance=consummer)

您正在传递一个QuerySet来形成,而不是一个模型实例:https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19336296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档