Python Django order_by()未进行正确排序

Python Django order_by()未进行正确排序,python,django,django-custom-tags,Python,Django,Django Custom Tags,我在Django上设置了以下两个位置的查询,唯一的问题是限制,并给出了不同的结果 下面是以下查询集的第一个结果 list_empleados = empleado.objects.filter( empresa=session_empresa ).order_by('-puntos')[:3] 正确的结果应该是: 19,13,9而不是9,19,13明白我的意思吗 这是第二个查询集 list_empleados = empleado.objects.filter( empres

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

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

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

正确的结果应该是:

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

这是第二个查询集

list_empleados = empleado.objects.filter(
    empresa=session_empresa
).order_by('puntos')
结果如下

正确的结果应该是:

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

models.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
class empleado(models.Model):
empresa=models.ForeignKey(empresa)
nombre=models.CharField(最大长度=50)
fecha\u nacimiento=models.DateField(auto\u now\u add=False)
性别选择=(
('M','mangino'),
(‘F’、‘Femenino’),
)
sexo=models.CharField(最大长度=1,选项=性别选项)
阿凡达=StdImageField(上传至='avatar/%Y/%m/%d',变体={
“大”:(300,300,真),
“中等”:(50,50,正确),
“缩略图”:(98122,True)})
correo=models.EmailField(最大长度=100)
departamento=模型。ForeignKey(departamento)
telefono=models.CharField(最大长度=21)
direccion=models.CharField(最大长度=200)
twitter=models.CharField(最大长度=15)
usuario=models.CharField(最大长度=15)
密码=models.CharField(最大长度=40)
primer_lugar=型号。CharField(最大长度=20)
segundo\u lugar=models.CharField(最大长度=20)
tercer\u lugar=models.CharField(最大长度=20)
goleador=models.CharField(最大长度=20)
puntos=models.CharField(最大长度=2,默认值=0)
partidos=models.CharField(最大长度=4,默认值=0)
def avataremo(自我):
返回“”%(self.avatar.缩略图)
avata.o.allow_tags=True
def ___; unicode(自):
返回自身名称

这是因为puntos是一个charfield,所以它是按字典顺序排列的,所以“9”>“19”。如果要对其进行数字排序,则需要整数字段或浮点字段


我建议编辑模型,但如果你不能,那是因为puntos是charfield,所以它是按字典顺序排列的,所以“9”>“19”。如果要对其进行数字排序,则需要整数字段或浮点字段


我建议编辑该模型,但如果您不能

请向我们展示
empleado
模型的定义好吗?我在MySQL控制台上对MySQL进行了原始SQL查询,并给出了相同的结果,因此我认为这不是Django查询不好。因为这个查询给出了相同的结果,所以选择puntos,partidos FROM empresa_empleado,其中empresa_id=1 ORDER BY puntos DESC;你能告诉我们
empleado
模型的定义吗?我在MySQL控制台上对MySQL进行了原始SQL查询,得到了相同的结果,所以我认为这不是Django查询不好。因为这个查询给出了相同的结果,所以选择puntos,partidos FROM empresa_empleado,其中empresa_id=1 ORDER BY puntos DESC;你是100%正确的,它是固定的。在我添加这两个新字段之前,我有12个小时没有睡觉:)谢谢,我很抱歉这个明显的问题没有问题@eddwinpaz,这种事情一直发生在我身上:)我有一个类似的问题,但我是按pk排序的,主键是charfield吗?取决于你如何定义你的模型@Manza,打开一个新问题,我会尽力帮助你you@fasouto谢谢我添加了模型类Meta:ordering=('-id',)并且成功了谢谢你100%正确,它是固定的。在我添加这两个新字段之前,我有12个小时没有睡觉:)谢谢,我很抱歉这个明显的问题没有问题@eddwinpaz,这种事情一直发生在我身上:)我有一个类似的问题,但我是按pk排序的,主键是charfield吗?取决于你如何定义你的模型@Manza,打开一个新问题,我会尽力帮助你you@fasouto谢谢我在模型类Meta:ordering=('-id',)中添加了这个类,它工作了,谢谢