2015-02-23 47 views
-1

我在我的Django应用程序中有两个模型。第一个是Journey,第二个是ScheduleSchedule型号有Journey型号的外键。这些模型的模式如下。搜索Django对象order_by(child_model_field)

class Journey(models.Model): 
    pass 

class Schedule(models.Model): 
    journey=models.ForeignKey(Journey) 
    day=models.CharField(max_lenth=3, choices=days) 
    start_time=models.TimeField() 

    def __unicode__(self): 
     return self.day 

我想要做的是,当我运行查询Journey.objects.all()应该在ORDER_BY(Schedule.start_time)返回的旅程。像Journey.objects.all()。order_by(Schedule.journey)

它可能在Django的ORM中,或者这个功能是否由django提供或我必须做一个自定义查询来做到这一点。

指导将很可观

+0

什么是“节”?你没有提到它 – 2015-02-23 14:14:28

+0

它实际上是旅程,我错打了它 – 2015-02-23 14:32:13

回答

2

你可以尝试这样的:

Journey.objects.all().order_by('schedule__journey') 

查询子模型场/反向查找的格式是这样的:

ParentModel.objects.all().order_by('lowercase_child_modelname__fieldname)') 

详情请查看这里:https://docs.djangoproject.com/en/1.7/topics/db/queries/#lookups-that-span-relationships

+0

没有它没有工作。回溯是说'不能将关键字计划解析到字段列表中。我必须通过'schedule__start_time'对它进行排序 – 2015-02-23 14:44:38

+0

如果存在拼写错误,并且还要验证'Schedule'模型是否与'Journey'具有FK关系,请在您的问题中说明。你可以按照我在这个答案中提到的格式进行反向查找,从子模型的任何字段。 – ruddra 2015-02-23 14:47:23

+0

我想你说的是'Journey'是否有'Schedule'模型的外键。如果我们正在获取'Schedule'模型的对象,则此语句在相反的情况下可以是有效的。即Schedule.objects.all()。order_by(Journey__field_name) – 2015-02-23 15:03:50