Python 如何根据自动完成(Dango)中键入的任何字母进行筛选
Django中的自动完成过程运行良好 我的问题是,我不仅要根据模型字段Python 如何根据自动完成(Dango)中键入的任何字母进行筛选,python,django,search,filter,autocomplete,Python,Django,Search,Filter,Autocomplete,Django中的自动完成过程运行良好 我的问题是,我不仅要根据模型字段first\u name中的第一个字母进行过滤,还要根据first\u name可能包含的任何字母进行过滤 例如,假设我在表概要文件的first\u name列中存储了以下值: Louna 萝拉 琳达 翻车鱼 鲁纳 通过键入L,搜索返回Louna、Lola、Linda 我想通过键入na搜索返回Louna和Rouna 有什么想法吗 我的班级: class ProfileAutocomplete(autocomplete.Sele
first\u name
中的第一个字母进行过滤,还要根据first\u name可能包含的任何字母进行过滤
例如,假设我在表概要文件的first\u name
列中存储了以下值:
Louna
萝拉
琳达
翻车鱼
鲁纳
通过键入L,搜索返回Louna、Lola、Linda
我想通过键入na搜索返回Louna和Rouna
有什么想法吗
我的班级:
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 %}
{%load static%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{%endblock%}
{%block footer%}
{{form.media}
{%endblock%}
您似乎正在寻找或可能正在寻找。这些是区分大小写和不区分大小写的安全壳测试
生成的代码如下所示:
qs = qs.filter(first_name__contains=self.q)
不客气。请别忘了在答案上加上“已接受”的标记,这对解决问题最有帮助。看到了吗?