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.exclude(company='').exclude(company__isnull=True)而不是return qs

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) 

更重要的是,你(基於forms.py

所以我認爲你views.py代碼應該是可能想qs = qs.filter(company__istartswith=self.q)代替qs = qs.filter(name__istartswith=self.q)