我想请求有关此问题的帮助,我正在尝试订阅Job_Posting
到.order_by('fkey')
的查询集,但我想按字母顺序排序,而不是foreign key
class Job(models.Model):
Job_Position = models.CharField(max_length=30, null=True)
Num_Positions = models.CharField(max_length=30, null=True)
def __unicode__(self):
return self.Job_Position
class Job_Posting(models.Model):
fkey = models.ForeignKey("Job")
Job_Description = models.TextField(max_length=500, null=True)
通过
job_list = Job_Posting.objects.all().order_by('fkey')
预期结果
我目前使用.order_by('fkey')
是否可以通过.order_by()
或其他方式按字母顺序列出?提前谢谢。
答案 0 :(得分:2)
如docs所述,当您按外键订购时,它按该键的ID排序(默认情况下)。由于您希望按该fk上的字段进行排序,因此您需要使用__
来表示字段名称
job_list = Job_Posting.objects..order_by('fkey__Job_Position')
注意:也不需要.all()
。
答案 1 :(得分:2)
Job_Posting.objects.order_by("fkey__Num_Positions")
或
Job_Posting.objects.order_by("fkey__Job_Position")
取决于您要订购的Job
型号中的哪个字段。
答案 2 :(得分:1)
job_list = Job_Posting.objects.order_by('fkey__Job_Position')
要按其他模型中的字段排序,请使用与when相同的语法 你正在查询模型关系。就是这个名字 字段,后跟双下划线(__),后跟名称 新模型中的字段,等等,可以根据需要添加任意数量的模型 加入。