0

Django-autocomplete-lightを使用して、DjangoORMの要件に適合するように調整できない外部データベースの一部のフィールドを自動補完したいと思います。したがって、私はSQL Alchemyを使用してこのデータベースに接続します。Django ORMの代わりにSQL Alchemyを使用するdjango-autocomplete-light

私はこれを行う方法を見つけることができません。一例として、私は二重の列の主キーなしidフィールドがあるため動作しない(オートコンプリートは、表に対して次の代わりに、Djangoのモデルを使用したいと思います。効果的

query = (session.query(TableA.FIRSTNAME).distinct(TableA.FIRSTNAME) 
       .filter(TableA.FIRSTNAME.match(name))) 
data = query.limit(100).all() 

Iだろう。私の上記のクエリからフィールドの自動補完名を作成する代わりに、ドキュメントに示すように、Djangoの適量を使用するのが好き:

class CountryAutocomplete(autocomplete.Select2QuerySetView): 
    def get_queryset(self): 
     # Don't forget to filter out results depending on the visitor ! 
     if not self.request.user.is_authenticated(): 
      return Country.objects.none() 

     qs = Country.objects.all() 

     if self.q: 
      qs = qs.filter(name__istartswith=self.q) 

     return qs 

class PersonForm(forms.ModelForm): 
    birth_country = forms.ModelChoiceField(
     queryset=Country.objects.all(), 
     widget=autocomplete.ModelSelect2(url='country-autocomplete') 
    ) 

答えて

0

[OK]を、私は私が私の解決策を見つけることができたと思います

私が使用することができます。 Select2ListViewはSQLの錬金術クエリに作用するr forms.pyでviews.py

from .forms import get_choice_list 

class Select2ListViewAutocomplete(autocomplete.Select2ListView): 
    def create(self, text): 
     return text 

    def get_list(self): 
     return get_choice_list(name=self.q) 

私は、次のしている:リストをeturns

dbc.extract_distinct_typecodeは、SQL錬金術を使用する関数への呼び出しをされ
from dal import autocomplete 

def get_choice_list(name=''): 
    return dbc.extract_distinct_typecode(typeCode=name) 

class SelectTypeForm(forms.Form): 
    typeCode = autocomplete.Select2ListCreateChoiceField(choice_list=get_choice_list, widget=autocomplete.ListSelect2(url='typecode-autocomplete')) 

コードのリストを抽出する。私は速度の良いようにコードのリストの長さを制限しています。

とurls.pyに私には、以下の持っている:URLは任意のユーザーに結果を返さないように、ユーザーが認証されていることを確認するために

urlpatterns = [ 
    url(r'^typecode-autocomplete/$', Select2ListViewAutocomplete.as_view(), name='typecode-autocomplete'),] 

そのおそらく良いアイデアを。

関連する問題