【发布时间】:2017-02-10 14:55:59
【问题描述】:
我有以下型号和形式
class TravelShare(Share): # indirect derived via Share from models.Model
source = models.PointField(geography=True, srid=4326)
destination = models.PointField(geography=True, srid=4326)
departure = models.DateTimeField(default=timezone.now)
departure_delta = models.SmallIntegerField(default=60)
objects = TravelShareManager()
def __str__(self):
return self.id
class TravelShareForm(forms.ModelForm):
class Meta:
model = TravelShare
fields = ['source', 'destination', 'departure', 'departure_delta']
使用
测试表单时def test_TravelShareCreate(self):
source = Point(x=48.0, y=11.0, srid=4326)
destination = Point(x=48.0001, y=11.0001, srid=4326)
now = timezone.localtime(timezone.now())
print ("now : %s" % (now))
now_string = now.strftime('%m.%d.%Y %H:%M:%S')
form_data = {
'source': source,
'destination': destination,
'departure': now_string,
'departure_delta': 30,
}
form = TravelShareForm (form_data)
print (form.errors)
self.assertTrue(form.is_valid())
form.instance.creator = self.creator
result = form.save()
self.assertEqual(result.creator_id, self.creator.id)
self.assertEqual(result.source, source)
self.assertEqual(result.destination, destination)
result_dep = timezone.localtime(result.departure)
print("result_dep : %s" % (result_dep))
self.assertEqual(result.departure, now)
我终于来了
现在 : 2017-02-10 15:49:21.935894+01:00
result_dep : 2017-10-02 15:49:21+02:00
失败
Traceback(最近一次调用最后一次): 文件“/home/michael/PycharmProjects/sharadar/main/tests/test_forms.py”,第 43 行,在 test_TravelShareCreate self.assertEqual(result.departure, now) AssertionError: datet[14 chars]017, 10, 2, 15, 49, 21, tzinfo=DstTzInfo 'Eur[25 chars]DST) != datet[14 chars]017, 2, 10, 15, 49, 21, 935894 , tzinfo=DstTzI[32 个字符]STD
结果 DateTime 似乎有不同的 TZ 或至少显示 +2 而不是 +1
感谢您的帮助
迈克尔
【问题讨论】:
-
我找到了。数据库的结果四舍五入到秒,因此 15:49.21.93894+1.00 变为 15:49:21+02:00
标签: django postgresql datetime