1

form.py を持っている Django ajax-selects パッケージを使用しようとしています:

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 )

しかし、私のフォームでは、オートコンプリートもフィールド作成もありません。私は何を逃したのですか?

4

1 に答える 1

1

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

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

あなたはおそらく次のようなことを意図しているでしょう:

def get_query(self, q, request):
    return self.model.objects.filter(last_name__icontains=q)
于 2016-11-15T18:11:49.823 に答える