Django 搜索字段不工作
Django search field not working
我希望能够搜索用户并将其引导至所有用户的列表。
当我尝试使用搜索功能时,收到此错误:相关字段查找无效:icontains。
追溯到这一行:
clients = LessonCount.objects.filter(user__icontains=q)
有什么想法吗?提前致谢!
views.py:
def search(request):
try:
q = request.GET.get('q')
except:
q = None
if q:
clients = LessonCount.objects.filter(user__icontains=q)
context = {
'query': q,
'clients': clients
}
template = 'clients.html'
else:
context = {}
template = 'contact.html'
return render(request, template, context)
models.py:
class LessonCount(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
lesson_current_amount = models.PositiveIntegerField(default=0, verbose_name='Current Number of Lessons')
def __unicode__(self):
return str(self.user.username)
class Meta:
ordering = ['-user']
def update_lesson_count(self):
if self.lesson_current_amount > 0:
self.user.is_member = True
self.user.save()
elif self.lesson_current_amount <= 0:
self.user.is_member = False
self.user.save()
else:
pass
(user__icontains=q)
正在对用户对象调用 icontains 查找。我认为您应该做的是 (user__username__icontains=q)
,它将对用户名执行查找。
我希望能够搜索用户并将其引导至所有用户的列表。
当我尝试使用搜索功能时,收到此错误:相关字段查找无效:icontains。
追溯到这一行:
clients = LessonCount.objects.filter(user__icontains=q)
有什么想法吗?提前致谢!
views.py:
def search(request):
try:
q = request.GET.get('q')
except:
q = None
if q:
clients = LessonCount.objects.filter(user__icontains=q)
context = {
'query': q,
'clients': clients
}
template = 'clients.html'
else:
context = {}
template = 'contact.html'
return render(request, template, context)
models.py:
class LessonCount(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
lesson_current_amount = models.PositiveIntegerField(default=0, verbose_name='Current Number of Lessons')
def __unicode__(self):
return str(self.user.username)
class Meta:
ordering = ['-user']
def update_lesson_count(self):
if self.lesson_current_amount > 0:
self.user.is_member = True
self.user.save()
elif self.lesson_current_amount <= 0:
self.user.is_member = False
self.user.save()
else:
pass
(user__icontains=q)
正在对用户对象调用 icontains 查找。我认为您应该做的是 (user__username__icontains=q)
,它将对用户名执行查找。