Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有django自动完成光的django滤光片_Django_Django Filter_Django Autocomplete Light - Fatal编程技术网

带有django自动完成光的django滤光片

带有django自动完成光的django滤光片,django,django-filter,django-autocomplete-light,Django,Django Filter,Django Autocomplete Light,有人成功地一起使用dal和django过滤器吗? 下面是我的, 我尝试使用filterset_工厂,提供模型类和字段列表,然后尝试使用futuremodelform。 我有 ModelForm没有指定模型类 我认为这只是发生的众多错误之一。 以前有人这样做过,我必须使用filterset_factory,并从参数创建动态类,我还想覆盖小部件,以便可以使用dal小部件 #testing filterset from dal import autocomplete from d

有人成功地一起使用dal和django过滤器吗? 下面是我的, 我尝试使用filterset_工厂,提供模型类和字段列表,然后尝试使用futuremodelform。 我有

ModelForm没有指定模型类

我认为这只是发生的众多错误之一。 以前有人这样做过,我必须使用filterset_factory,并从参数创建动态类,我还想覆盖小部件,以便可以使用dal小部件

   #testing filterset
    from dal import autocomplete
    from django.db import models
    class PanFilterSet(django_filters.FilterSet):
        filter_overrides = {
            models.ForeignKey: {
                'filter_class': autocomplete.ModelSelect2,
            },

        }

    def pan_filterset_factory(model,fields):
        meta = type(str('Meta'), (object,), {'model': model,'fields':fields,'form':autocomplete.FutureModelForm})
        filterset = type(str('%sFilterSet' % model._meta.object_name),
                         (PanFilterSet,), {'Meta': meta})
        return filterset

    searchFormFilterSet = pan_filterset_factory(self.model_class,self.final_search_fields)
    f = searchFormFilterSet(self.request.GET, queryset=self.get_queryset())
    print f.form.as_p()

我对DAL不是很熟悉,但我对django过滤器有所贡献,并且对其内部结构有很好的理解。请注意:

  • filter\u覆盖
    中的
    filter\u类
    应该是一个过滤器,而不是小部件。您可以通过
    extra
    键提供附加参数(如小部件),如图所示。任何不属于筛选器的参数都会自动传递到基础表单字段
  • 无论如何,使用覆盖不是正确的方法,因为小部件需要一个特定于字段的端点来执行自动完成。由于端点是特定于字段的,因此它不适用于所有
    ForeignKey
    s
  • django过滤器使用常规的
    Form
    s,而不是
    ModelForm
    s,因此不会构造适当的
    Meta
    内部类
    FutureModelForm
    似乎无论如何都不提供自动完成功能-它似乎无关紧要
您的工厂必须手动生成自动完成过滤器-如下所示:

def dal_字段(字段名称、url):
返回过滤器。ModelChoiceFilter(
名称=字段名称,
widget=autocomplete.ModelSelect2(url=url),
)
def dal_过滤器设置工厂(型号、字段、dal_字段):
attrs={field:dal_field(field,url)表示字段,url位于dal_fields.items()中
attrs['Meta']=type(str('Meta'),(object,),{'model':model,'fields':fields})
filterset=type(str(“%sFilterSet”%model.\u meta.object\u name),
(过滤器集),属性
返回过滤器集
#用法:
#{字段名:自动完成端点}的映射。
dal_字段={'birth_country':'country autocomplete'}
字段=['list'、'or'、'dict'、'of'、'other'、'fields']
SomeModelFilterSet=dal_filterset_工厂(SomeModel,字段,dal_字段)

attrs
中的字段使用声明式API。更多信息请参见。

我对DAL不是很熟悉,但我对django过滤器有所贡献,并且对其内部结构有相当的了解。请注意:

  • filter\u覆盖
    中的
    filter\u类
    应该是一个过滤器,而不是小部件。您可以通过
    extra
    键提供附加参数(如小部件),如图所示。任何不属于筛选器的参数都会自动传递到基础表单字段
  • 无论如何,使用覆盖不是正确的方法,因为小部件需要一个特定于字段的端点来执行自动完成。由于端点是特定于字段的,因此它不适用于所有
    ForeignKey
    s
  • django过滤器使用常规的
    Form
    s,而不是
    ModelForm
    s,因此不会构造适当的
    Meta
    内部类
    FutureModelForm
    似乎无论如何都不提供自动完成功能-它似乎无关紧要
您的工厂必须手动生成自动完成过滤器-如下所示:

def dal_字段(字段名称、url):
返回过滤器。ModelChoiceFilter(
名称=字段名称,
widget=autocomplete.ModelSelect2(url=url),
)
def dal_过滤器设置工厂(型号、字段、dal_字段):
attrs={field:dal_field(field,url)表示字段,url位于dal_fields.items()中
attrs['Meta']=type(str('Meta'),(object,),{'model':model,'fields':fields})
filterset=type(str(“%sFilterSet”%model.\u meta.object\u name),
(过滤器集),属性
返回过滤器集
#用法:
#{字段名:自动完成端点}的映射。
dal_字段={'birth_country':'country autocomplete'}
字段=['list'、'or'、'dict'、'of'、'other'、'fields']
SomeModelFilterSet=dal_filterset_工厂(SomeModel,字段,dal_字段)

attrs
中的字段使用声明式API。更多信息请访问。

谢谢夏尔巴,你是明星。除此之外,我只需要向ModelChoiceFilter提供一个queryset,这是一个必需的参数。如果你能编辑你的答案,它将是完整的。这将取决于偏好。如果您想手动传递查询集,那么它很简单。您还可以从字段的相关模型管理器获得默认查询集,如图所示。嘿,这很酷,您考虑过向上游贡献吗?我是GitHub上的
@rpkilby
,定期向django filter投稿。我认为这段代码不属于DF,但是你完全可以将它添加到DAL中。对我来说,只需将小部件传递给过滤器就行了。当然,我还需要在模板中加载JS。谢谢夏尔巴,你是明星。除此之外,我只需要向ModelChoiceFilter提供一个queryset,这是一个必需的参数。如果你能编辑你的答案,它将是完整的。这将取决于偏好。如果您想手动传递查询集,那么它很简单。您还可以从字段的相关模型管理器获得默认查询集,如图所示。嘿,这很酷,您考虑过向上游贡献吗?我是GitHub上的
@rpkilby
,定期向django filter投稿。我认为这段代码不属于DF,但是你完全可以将它添加到DAL中。对我来说,只需将小部件传递给过滤器就行了。当然,我还需要在模板中加载JS。