【问题标题】:Django - sorting foreign key objects by dateDjango - 按日期对外键对象进行排序
【发布时间】:2015-06-21 12:53:29
【问题描述】:

我有以下 django 模型:

class Application(models.Model):
   name = models.CharField(max_length=50)      

class Release(models.Model):
   application = models.ForeignKey(Application)
   release_date = models.DateField("Release Date")

即一个Application 可以有多个ReleasesRelease 可能是历史版本,也可能是计划的未来版本(即将发布)

在我的 django 视图中,我目前返回一个应用程序名称表。 我想返回一个应用程序名称表和下一个即将发布的日期。如果没有即将发布的版本,它应该是空白的。

我的视图目前如下所示:

def index(request): 
  all_apps = Application.objects.all()
  template = loader.get_template('index.html')
  context = RequestContext(request, {'all_apps': all_apps})
  return HttpResponse(template.render(context))

我怎样才能为每个应用提供“下一个即将发布的版本”,以便可以在模板中呈现它?

【问题讨论】:

    标签: python django filter foreign-keys


    【解决方案1】:

    在应用程序上提供一个方法

    class Application(models.Model):
        name = models.CharField(max_length=50)
    
        def next_upcoming_release(self):
            future_releases = self.release_set.filter(release_date__gte=datetime.datetime.now())
            return future_releases.order_by('release_date').first()
    

    您可以在模板中使用{{ application.next_upcoming_release }} 调用它。

    【讨论】:

    • 那么django自动提供了release_set这个变量?所以objectname_set可以访问任何外键集合?
    • 是(除非您在定义 ForeignKey 字段时明确设置 related_name,在这种情况下您可以使用它。)请参阅 the docs
    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多