带有django自动完成光的django滤光片
有人成功地一起使用dal和django过滤器吗? 下面是我的, 我尝试使用filterset_工厂,提供模型类和字段列表,然后尝试使用futuremodelform。 我有 ModelForm没有指定模型类 我认为这只是发生的众多错误之一。 以前有人这样做过,我必须使用filterset_factory,并从参数创建动态类,我还想覆盖小部件,以便可以使用dal小部件带有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
#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
- 无论如何,使用覆盖不是正确的方法,因为小部件需要一个特定于字段的端点来执行自动完成。由于端点是特定于字段的,因此它不适用于所有
sForeignKey
- django过滤器使用常规的
s,而不是Form
s,因此不会构造适当的ModelForm
内部类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
- 无论如何,使用覆盖不是正确的方法,因为小部件需要一个特定于字段的端点来执行自动完成。由于端点是特定于字段的,因此它不适用于所有
sForeignKey
- django过滤器使用常规的
s,而不是Form
s,因此不会构造适当的ModelForm
内部类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。