【问题标题】:Django .order_by -dayDjango .order_by -day
【发布时间】:2014-09-09 23:29:45
【问题描述】:

我有一个返回节目列表的模板标签:

def get_all_shows():

allshows = Shows.objects.all().order_by("-broadcast_day", "-broadcast_time")[:9].reverse()
tags = Shows.tags.all()
return {'allshows': allshows, 'tags': tags}

在我的模型中有一个day选择字段:

class Shows(models.Model):
CHOICES = (
    ('Monday', 'Monday'),
    ('Tuesday', 'Tuesday'),
    ('Wednesday', 'Wednesday'),
    ('Thursday', 'Thursday'),
    ('Friday', 'Friday'),
    ('Saturday', 'Saturday'),
    ('Sunday', 'Sunday'),

)
broadcast_day = models.CharField(default=1,max_length=12, choices=CHOICES, blank=True)
broadcast_time = models.TimeField(default=datetime.now, blank=True)

我的问题是如何按天排序,以便最近的一天显示相应的节目?

还有可以算出当天的日期吗?

谢谢。

【问题讨论】:

标签: django django-views django-templates


【解决方案1】:

如果我正确理解了您的问题,您需要使用Django Custom Model Manager:
Models.py 中:

class ShowManager(models.Manager):
    def my_custom_method(self):
         #some customizations !
         return super(ShowManager, self).my_custom_method().filter(#some filters here)

class Show(models.Model):
       CHOICES = (
         ('Monday', 'Monday'),
         ('Tuesday', 'Tuesday'),
         ('Wednesday', 'Wednesday'),
         ('Thursday', 'Thursday'),
         ('Friday', 'Friday'),
         ('Saturday', 'Saturday'),
         ('Sunday', 'Sunday'),

         )
       objects = models.Manager()
       my_customization = ShowManager()
       broadcast_day = models.CharField(default=1,max_length=12, choices=CHOICES, blank=True)
       broadcast_time = models.TimeField(default=datetime.now, blank=True)

现在你可以使用了,Show.my_customization! (如 Show.objects.all() )在您的视图中!

【讨论】:

  • @bbcrtv : 如果这不是你的意思,请告诉 :)
猜你喜欢
  • 2016-08-07
  • 1970-01-01
  • 2019-12-20
  • 2011-11-28
  • 2022-11-13
  • 2012-09-28
  • 2013-02-21
  • 2012-05-06
  • 2011-08-22
相关资源
最近更新 更多