我正试图在我的个人资料页面中包括一个搜索字段。它适用于某些模块字段。我的问题是当我按属性使用订单时(如果我错了,请纠正我)。
我有个模特
class employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField(max_length=50)
gender = models.CharField(max_length=1,choices=(('M','Male'),
('F','Female')),blank=True)
age = models.PositiveIntegerField(blank=True, null=True)
salary = models.CharField(blank = True,max_length=50)
def __str__(self):
return self.user.username 和查询
def view_profile(request):
employees = employee.objects.all()
query = request.GET.get("q")
if query:
employees = employee.objects.filter(
Q(last_name__icontains=query)|
Q(first_name__icontains=query)|
Q(gender__icontains=query)|
Q(email__icontains=query)|
Q(age__icontains=query).order_by('-id')
).distinct()
args= {'user':request.user,'employees':employees}
return render(request,'profile.html',args) 我发现了一个错误:
'Q' object has no attribute 'order_by' 当我在用户名上搜索字段时,我想知道另一个小错误,我得到的是这种类型的错误:
Q(user__icontains=query)
Related Field got invalid lookup: icontains请提供任何关于如何排除故障的建议或我可以阅读的任何文档。对于上述任何错误
发布于 2018-08-14 05:00:31
这是个简单的错误。对位术是错误的。换到,
if query:
employees = employee.objects.filter(
Q(last_name__icontains=query) |
Q(first_name__icontains=query) |
Q(gender__icontains=query) |
Q(email__icontains=query) |
Q(age__icontains=query)).order_by('-id').distinct()发布于 2018-08-14 06:21:32
第一个错误是一个简单的错误。
第二个问题是获取数据的问题。
用于字符串字段而不是相关字段的图标
它可以写成这样:
Q(user__in=query)或者类似的东西
Q(user__username__icontains=query_string)https://stackoverflow.com/questions/51833685
复制相似问题