2016-11-09 49 views
0

我一直在使用簡單的DAL和django過濾器,但我無法與django過濾器一起使用DAL。django過濾器與django自動完成燈

我讀過此頁:django-filter with django autocomplete light

,但我仍然感到困惑。 我有過濾器類這樣的下面,我想就「DEVNAME」字段中使用DAL:

class DevListFil(django_filters.FilterSet): 
    devname = django_filters.CharFilter(name='devname',lookup_expr='icontains') 
    sn  = django_filters.CharFilter(name='sn',lookup_expr='icontains') 
    devtype = django_filters.CharFilter(name='devtype',lookup_expr='icontains') 
    class Meta: 
     model = Device 
     fields = ['devname','sn','devtype'] 

任何幫助或點到右的方向吧。

回答

1

過濾器只是常規Django表單字段的抽象。任何不適用於過濾器的參數都會傳遞給基礎字段。在這種情況下,您需要做的就是使用過濾器來連接自動填充小部件。可能是這樣的:

devname_url = '...' 

class DevListFil(django_filters.FilterSet): 
    devname = django_filters.CharFilter(name='devname', lookup_expr='icontains', widget=autocomplete.ModelSelect2(url=devname_url)) 
    sn  = django_filters.CharFilter(name='sn', lookup_expr='icontains') 
    devtype = django_filters.CharFilter(name='devtype', lookup_expr='icontains') 

    class Meta: 
     model = Device 
     fields = ['devname', 'sn', 'devtype'] 
+0

謝謝你幫助我理解。 我確實在窗體類中放置了小部件參數,但是您的示例正常工作。 – rifaiz

+0

@Sherpa我實現它就像這樣,但我得到一個空的選擇框,而不是一個自動完成框。你在模板中做了什麼特別的事情嗎? –

+0

@CameronTaylor您可能需要將表單媒體包含在您的模板中。 '{{filter.form.media}}' – Sherpa