Django 按外键排序

2024-10-01 09:31:48 发布

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

我用python编写了一个函数,该函数要求模型的一组对象按一个特定的参数(问题的代码名)排序,这个参数的结果是一个字符串。当我在ProblemUser表中对它进行排序时,它是正确的,然而,当我在ProblemUser model(使用order_by)中排序时,排序与实际结果完全不符。在

在使用sorted()函数从模型中获取元素后,我设法通过对元素进行排序来解决这一问题,但是,我仍然对如何在order_by函数中排序外键产生疑问。在

class Problem(models.Model):
    problem_name = models.CharField(max_length=256,default='Unnamed')
    source = models.CharField(max_length=200)
    url = models.CharField(max_length=200)
    codename = models.CharField(max_length=200, primary_key=True)
    difficulty = models.CharField(max_length=32,default='UNRATED')

class ProblemUser(models.Model):
    problem = models.ForeignKey(Problem)
    handler = models.ForeignKey(Handler)
    solved = models.BooleanField(default=True)
    voted = models.BooleanField(default=False)
    entry = models.DateField()


t = ProblemUser.objects.filter(solved=1, handler=Handler.objects.get(id=1)).order_by('problem')

t[0].problem.codename < t[42].problem.codename
False

t[1].problem.codename < t[42].problem.codename
True

按订单编号('u'u'u)

一些代码名示例是(我记得在按外键排序时看到的输出):

S_1_T
S_1000_E
S_1001_F
.
.
.
S_2_P

感谢您的时间和帮助!:). 在


Tags: 函数模型truedefault参数by排序models