模型中def __unicode__语句中的感知日期时间字段,以及它在模板中的表示?

时间:2012-04-25 20:31:15

标签: django django-models django-templates

我有时会在模板中使用模型实例。例如,在下面的模型中,我可以使用{{leg}},我希望在def unicode (self):部分中显示信息。但是,时区使事情变得复杂。有没有办法让我的def unicode (self):当模型实例嵌入到带有模板标签的模板中时,参数是时区识别的?现在,它强制了一个知道字符串的unicode日期表示(这是我的默认时区),但这对用户没有意义。

class Leg(models.Model):
    startpoint = models.CharField(max_length=50)
    endpoint = models.CharField(max_length=50)
    drive_date_time = models.DateTimeField(verbose_name='Start date and time', blank=True, null=True)
    riders = models.ManyToManyField(Rider, blank=True)
    drivers = models.ManyToManyField(Driver, blank=True)
    carpool = models.ForeignKey(Carpool,  blank=True, null=True)
    open_to_prefs = models.BooleanField(default=True)

    class Meta:
        ordering = ['drive_date_time']
        verbose_name = 'Drive leg'

    def __unicode__(self):
        return  str(self.drive_date_time)  + ' | to: ' + self.endpoint

1 个答案:

答案 0 :(得分:0)

我发现如果你需要渲染一个与datetimefield相关联的文本字符串,你可以使用与pytz相关的.astimezone()方法。这有助于很多情况,包括上面的情况。