Ich habe folgendes Modell und Formdjango und Postgres Datetimefield
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']
Beim Testen der Form mit
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)
Ich bin schließlich in
jetzt: 2017.02.10 15 : 49: 21.935894 + 01: 00
result_dep: 2017-10-02 15: 49: 21 + 02: 00
Failure
Traceback (jüngste Aufforderung zuletzt): File "/home/michael/PycharmProjects/sharadar/main/tests/test_forms.py", Zeile 43, in test_TravelShareCreate self.assertEqual (result.departure , jetzt) AssertionError: Datum [14 Zeichen] 017, 10, 2, 15, 49, 21, tzinfo = DstTzInfo 'Eur [25 Zeichen] DST)! = Datum [14 Zeichen] 017, 2, 10, 15, 49 , 21, 935894, Tzinfo = DstTzI [32 Zeichen] STD
Es scheint, dass die resultierende Datetime eine andere TZ oder zumindest zeigt hat +2 statt +1
Danke für jede Hilfe
Michael
Ich habe es gefunden. Das Ergebnis aus der Datenbank wird auf Sekunden gerundet und somit 15: 49.21.93894 + 1.00 wird 15: 49: 21 + 02: 00 – mbieren