Django-如何在查询集中获得倒数第二个记录?

Kjj*_*ssy 6 django python-2.7

我有一个名为employees_salary模型,我需要获得员工的第二高薪.

我得到的是 - 我可以过滤最新的(),第一个(),最后一个()

这是工作,但如何过滤最后我错过了什么

请帮忙

Avi*_*aor 13

class Salaries(models.Model):

  employee_name = models.CharField(max_length=255)
  salary = models.IntegerField()


q = Salaries.objects.all().order_by('-salary)

second_highest_paid_name = q[1].employee_name
Run Code Online (Sandbox Code Playgroud)

  • 用户 "q = Salaries.objects.all().order_by('-salary)[1]" .. 它会给你第二高的工资记录.. (3认同)

Vik*_*del 5

这个方法也能行得通

class EmployeeSalary(models.Model):    
    employee_name = models.CharField(max_length=255)
    salary = models.IntegerField()

#code for view
q = EmployeeSalary.objects.all().order_by('-salary')[1:1]
second_paid_name = q[0].employee_name
second_paid_salary = q[0].salary
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案更好,因为它返回一个空查询集,而不是在没有第二条记录时引发异常。只是一个重要的注意事项:它应该是“[1:2].first()”以获得第一个结果。至少在我对“[1:1]”的测试中,结果始终是“无”。 (3认同)