Django的自动完成光
问题描述:
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
我如何添加自动完成查询集只非空 “公司” 字段? 你能帮我吗?
答
您的公司领域是必需的,所以我不认为你会有空值。不管怎么说,你可以完成你想要通过这个做什么:
GuestContact.objects.exclude(company__isnull=True).exclude(company__exact='')
基本上,它是从querset排除null
和''
值。
希望它有帮助。
答
尝试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)