Процесс автозаполнения в Django работает нормально.
Моя проблема в том, что я хочу фильтровать не только по первой букве в поле модели first_name
, но и по любой букве, которую может иметь имя_первой.
Например, представьте, что я сохранил в столбце first_name
приведенные ниже значения в моей таблице профиля:
Louna
Лола
Линда
Мола
Rouna
При наборе L поиск возвращает Louna, Lola, Linda.
Я хочу, набрав na поиск, чтобы вернуть Lou na и Rou na
Есть идеи?
Мой класс:
class ProfileAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Don't forget to filter out results depending on the visitor !
# if not self.request.user.is_authenticated():
# return Profile.objects.none()
qs = Profile.objects.all()
if self.q:
qs = qs.filter(first_name__istartswith=self.q)
return qs
Моя модель:
class Profile(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
created_date = models.DateTimeField(default=datetime.datetime.now)
def __str__(self):
return self.first_name+ " " +self.last_name
Моя форма:
from django import forms
from .models import Profile
from dal import autocomplete
from django.forms import ModelChoiceField
class ProfileForm(forms.ModelForm):
first_name = forms.ModelChoiceField(queryset=Profile.objects.all(),widget=autocomplete.ModelSelect2(url='profile-autocomplete'))
class Meta:
model = Profile
fields = ('__all__')
Мой шаблон:
{% load static %}
{% block content %}
<div>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" />
</form>
</div>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
{{ form.media }}
{% endblock %}