【发布时间】:2014-12-17 14:58:08
【问题描述】:
我使用Django Model Form 和autocomplete_light 创建了一个表单。我想根据调用类时传递的论点过滤下拉列表item中的建议。
我的表格是
class CamenuForm(autocomplete_light.ModelForm):
class Meta:
model = Ca_dispensaries_item
exclude = ('dispensary',)
autocomplete_fields = ('item',)
def __init__(self, *args, **kwargs):
self.category = kwargs.pop('category', None)
super(CamenuForm, self).__init__(*args, **kwargs)
self.fields['item'].queryset=Items.objects.filter(product_type__name=self.category)
我根据传递的category 的值在__init__ 中应用了过滤器,但它似乎不起作用。
注册表是
autocomplete_light.register(Items,search_fields=('item_name',))
表格被称为
form = CamenuForm(request.POST or None, category=category)
请建议我一种方法,以便我可以根据调用表单时传递的值优化搜索。
我已经尝试使用修改它
class AutoComplete(autocomplete_light.AutocompleteModelBase):
search_fields=('item_name',)
def choices_for_request(self):
category = self.request.POST.get('category', 'none')
print category
choices = self.choices.all()
if category:
choices = choices.filter(product_type__name=category)
return self.order_choices(choices)[0:self.limit_choices]
和注册表为
autocomplete_light.register(项目,自动完成)
通过这个,我知道category获取值none(因为我选择的默认值),这个方法似乎也不起作用。
有没有办法可以将category 的值传递给request_for_choices 以便细化搜索?
【问题讨论】:
标签: django django-models django-forms django-autocomplete-light