Django order_by()未正确排序

2024-06-02 04:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django上设置了以下两个查询,唯一的问题是限制,并给出了不同的结果

下面是以下查询集的第一个结果

list_empleados = empleado.objects.filter(
    empresa=session_empresa
).order_by('-puntos')[:3]

enter image description here

正确的结果应该是:

19,13,9而不是9,19,13明白我的意思了吗?在

这是第二个查询集

^{pr2}$

这是结果

enter image description here

正确的结果应该是:

19,13,9,1而不是1,13,19,9明白我的意思了吗?在

在模型.py在

class empleado(models.Model):


    empresa = models.ForeignKey(empresa)
    nombre = models.CharField(max_length=50)

    fecha_nacimiento = models.DateField(auto_now_add=False)

    GENDER_CHOICES = (

        ('M', 'Masculino'),
        ('F', 'Femenino'),
    )

    sexo = models.CharField(max_length=1, choices=GENDER_CHOICES)

    avatar = StdImageField(upload_to='avatar/%Y/%m/%d', variations={
        'large': (300, 300, True),
        'medium': (50, 50, True),
        'thumbnail': (98, 122, True)})

    correo = models.EmailField(max_length=100)

    departamento = models.ForeignKey(departamento)

    telefono = models.CharField(max_length=21)
    direccion = models.CharField(max_length=200)
    twitter = models.CharField(max_length=15)
    usuario = models.CharField(max_length=15)
    password = models.CharField(max_length=40)
    primer_lugar = models.CharField(max_length=20)
    segundo_lugar = models.CharField(max_length=20)
    tercer_lugar = models.CharField(max_length=20)
    goleador = models.CharField(max_length=20)
    puntos = models.CharField(max_length=2, default=0)
    partidos = models.CharField(max_length=4, default=0)

    def avatarEmpleado(self):
        return '<img src="/media/%s" height="90" width="90">' % (self.avatar.thumbnail)

    avatarEmpleado.allow_tags = True

    def __unicode__(self):
        return self.nombre

Tags: selftruemodelsgenderlengthmaxchoicescharfield
1条回答
网友
1楼 · 发布于 2024-06-02 04:48:24

因为puntos是一个charfield,所以它是按字典顺序排序的,所以“9”>;“19”。如果你想用数字来排序,你需要一个整数域或floatfield。在

我建议编辑模型,但如果你不能check out this solution

相关问题 更多 >