1

model.py:Djangoのオートコンプリート光

class Reservation(models.Model): 
    company = models.ForeignKey(GuestContact, on_delete=models.PROTECT) 

class GuestContact(models.Model): 
    company = models.CharField(max_lenght=30) 
    last_name = models.CharField(max_lenght=30) 
    first_name = models.CharField(max_lenght=30) 

form.py.

class ReservationForm(ModelForm): 

    class Meta: 
     model = Reservation 
     fields = '__all__' 
     widgets = { 
      'company': autocomplete.ModelSelect2() 
    } 

views.py

class GuestContactAutocomplete(autocomplete.Select2QuerySetView): 
    def get_queryset(self): 

     qs = GuestContact.objects.all() 

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

     return qs 

私だけではない、空の "会社" フィールドクエリセットを自動補完するために追加できますか? 私を助けることができますか?

答えて

0

あなたの会社のフィールドは必須ですので、値が空ではないと思います。とにかく、あなたはこれで何をしたいかを達成することができます

GuestContact.objects.exclude(company__isnull=True).exclude(company__exact='')

基本的には、どのようなそれがないと、quersetからnull''値を除外することです。

希望します。

0

return qsの代わりにreturn qs.exclude(company='').exclude(company__isnull=True)を試してください。

多くはである何、あなたはおそらく(forms.pyに基づく)qs = qs.filter(company__istartswith=self.q)の代わりqs = qs.filter(name__istartswith=self.q)を望んでいた

ので、私はあなたのviews.pyコードがあるべきだと思う:

class GuestContactAutocomplete(autocomplete.Select2QuerySetView): 
    def get_queryset(self): 

     qs = GuestContact.objects.all() 

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

     return qs.exclude(company='').exclude(company__isnull=True) 
関連する問題