2016-11-09 9 views
1

私は私form.pyを持っているDjangoのAjaxを選択パッケージ を使用しようとしています:Django ajax-selectパッケージが動作していません。私は何が欠けているのですか?

from ajax_select.fields import AutoCompleteSelectField, AutoCompleteSelectMultipleField 
from ajax_select import make_ajax_field 
class LeaseTenantForm(forms.ModelForm): 
    class Meta: 
     model = LeaseTenant 
     exclude = [] 
    tenant = make_ajax_field(LeaseTenant,'tenant','tenant',help_text="Search for label by name") 
    #tenant = AutoCompleteSelectField('tenant', required=False, help_text=None) 

私は私のlookup.pyを持っている:

from ajax_select import register, LookupChannel 
from client.models import Tenant 

@register('tenant') 
class TenantLookup(LookupChannel): 

    model = Tenant 

    def get_query(self, q, request): 
     return self.model.objects.filter(last_name=q) 

    def format_item_display(self, item): 
     return u"<span class='tag'>%s</span>" % item.last_name 

私は私のテナントmodel.pyがあります

class Tenant(CommonInfo): 
    version = IntegerVersionField() 

    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=40) 
    email = models.EmailField(null=True, blank=True) 
    phone = models.CharField(max_length=30) 
    language = models.CharField(max_length=1, default='E', 
           choices=LANGUAGE_CHOICES) 
    external_address = models.CharField(max_length=90,null=True, blank=True) 
    external_zip_code = models.CharField(max_length=50,null=True, blank=True) 
    external_city = models.CharField(max_length=60,null=True, blank=True) 
    external_state_province = models.CharField(max_length=30,null=True, blank=True) 
    external_country = models.CharField(max_length=30,null=True, blank=True) 
    status = models.CharField(max_length=1, default='N', 
           choices=TENANT_STATUS_CHOICES,null=True, blank=True) 
    def __unicode__(self): 
     return u'%s %i %s %s %s %s %s %s' % ("#", self.id,"first_name", self.first_name, "last_name", self.last_name, "phone", self.phone) 

私のフォームではオートコンプリートもフィールドも作成されません。 私は何を欠席しましたか?

+0

テナントのクラスで。そうでない場合は、フォームを読み込んでテキストを入力したときの一部の診断(リクエスト/応答など)が役立ちます。 –

+0

フィールド名が間違っています。私は間違ったバージョンをコピーしました。しかし、これは問題ではありません。 –

+0

あなたのフィルタは完全に一致しています...可能なオプションはいくつかありますか?また、containsやstartswithを使いたいですか? –

答えて

1

問題は完全一致クエリを使用していることです。オートコンプリートの動作は不正確です。あなたは持っている:

def get_query(self, q, request): 
    return self.model.objects.filter(last_name=q) 

あなたはおそらくの効果に何かを意図している:私はそれはGET_QUERYであなたのフィルタが存在しないフィールドを使用しているように見えるということだ推測している

def get_query(self, q, request): 
    return self.model.objects.filter(last_name__icontains=q) 
+0

最小限で__icontainsのようなものを使用する必要があります。それは問題ではありませんが、 –

関連する問題