Mysql Django-无法按外键名筛选
因此,目前我正在这样做,您可以通过一些过滤器搜索正在参加偶数考试的用户,这些过滤器是Mysql Django-无法按外键名筛选,mysql,django,django-models,django-views,Mysql,Django,Django Models,Django Views,因此,目前我正在这样做,您可以通过一些过滤器搜索正在参加偶数考试的用户,这些过滤器是名字、姓氏、用户名 错误当前正在被删除 要解压缩的值太多(应为2个) 视图中的错误行: 如何通过过滤器成功搜索 My views.py: 我尝试搜索的模型用户模型是标准Django auth: 在这里,您只需要构造一个字符串,也许它的形状类似于Python代码,但这不是向函数传递任意参数名的方式 这里可以使用关键字参数,并构造一个字典,将键(参数名称)映射到值(应与该参数对应的值),如: 相当于: TeamMem
名字、姓氏、用户名
错误当前正在被删除
要解压缩的值太多(应为2个)
视图中的错误行:
如何通过过滤器成功搜索
My views.py:
我尝试搜索的模型用户模型是标准Django auth:
在这里,您只需要构造一个字符串,也许它的形状类似于Python代码,但这不是向函数传递任意参数名的方式
这里可以使用关键字参数,并构造一个字典,将键(参数名称)映射到值(应与该参数对应的值),如:
相当于:
TeamMembership.objects.filter(user__email__contains='bar')
如果要筛选多个项,可以构造具有多个键的字典。但是请注意,键(如参数名)不能冲突(使用两次或两次以上相同的命名参数调用函数)
此外,请注意,
用户
模型包含(散列)密码和其他敏感数据,您可能希望避免对某些字段进行过滤,因为可以使用此机制从系统中删除数据。尝试理解错误的含义。当您尝试在不使用iteritems
或items
的情况下迭代python字典时,会出现“太多值无法解包”。再次重新读取代码块(查看文件)以检查dictionary Object的任何此类使用/访问此错误仅在预期为2个元素但返回的元素多于或少于2个时才会发生。非常感谢,我以前从未使用外键进行过筛选,因此此项对我来说是新的,当然不是所有字段都可以使用
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)
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)
some_dict = { "user__"+searchfilter+"__contains": searchinput}
usersearch = TeamMembership.objects.filter(**some_dict)
TeamMembership.objects.filter(**{ 'user__email__contains': 'bar' })
TeamMembership.objects.filter(user__email__contains='bar')