【发布时间】:2018-12-29 05:15:55
【问题描述】:
所以目前我正在这样做,您可以通过first_name, last_name, username的一些过滤器搜索参加活动的用户
目前的错误是
要解压的值太多(预计 2 个)
视图中的错误线:
makefilter = "user__"+searchfilter+"__contains="+searchinput
usersearch = TeamMembership.objects.filter(makefilter)
如何通过过滤器成功搜索?
我的意见.py:
def volunteer(request):
## init context
context = {}
## Get filters if somes
searchfilter = request.GET.get('filter', None)
searchinput = request.GET.get('searchinput', None)
## Checks if filter is not none or null or empty
if searchfilter != "" and searchfilter != None and searchinput != "" and searchinput != None:
## Great now check what filter is used
## Now strip the filters for whitespaces
searchfilter.strip()
searchinput.strip()
## This filter is for teams
if searchfilter == "teamname":
teamsearch = Team.objects.all().filter(name__contains=searchinput)
context['teams'] = True
context['search'] = teamsearch
## This filter is for users
elif searchfilter == "first_name" or searchfilter == "last_name" or searchfilter == "username" or searchfilter == "phone":
makefilter = "user__"+searchfilter+"__contains="+searchinput
usersearch = TeamMembership.objects.filter(makefilter)
context['users'] = True
context['search'] = usersearch
return render(request, 'volunteer/hqvolunteer.html', context)
我试图搜索用户模型的模型是标准的 Django 身份验证:
class TeamMembership(models.Model):
user = models.ForeignKey(User)
team = models.ForeignKey(Team)
ingroup = models.BooleanField(default=False)
leader = models.BooleanField(default=False)
groupleader = models.BooleanField(default=False)
【问题讨论】:
-
尝试理解错误的含义。当您尝试在不使用
iteritems或items的情况下迭代python 字典时,会出现“要解压的值太多”。再次重新读取代码块(查看文件)以检查字典对象的任何此类使用/访问 -
只有在预期有 2 个元素但返回的元素多于或少于 2 个时才会发生此错误。
标签: mysql django django-models django-views