'Q'对象没有属性'order_by'-Django

时间:2018-08-14 04:24:30

标签: django python-3.x django-views

我正在尝试在个人资料页面中添加搜索字段。它适用于某些模块字段。我的问题是我使用按属性排序(如果我输入错误,请更正)。

我有一个模特

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

请提供有关如何进行故障排除的建议或我可以阅读的任何文档。对于上述任何错误

2 个答案:

答案 0 :(得分:3)

这是一个简单的错字。错位放错了位置。更改为

WebView

答案 1 :(得分:2)

第一个错误是一个简单的错字错误。

第二个是您获取数据的问题

包含用于字符串字段而不是相关字段的

它可以这样写:

Q(user__in=query)

或类似的东西

Q(user__username__icontains=query_string)