2009-07-24 11 views
34

To:Jak sformatować dateTime w szablonie django?

{{ wpis.entry.lastChangeDate|date:"D d M Y" }} 

daje mi (dlaczego?):

2009-07-24 21:45:38.986156 

i nie wiem w jaki sposób, aby pominąć część frakcji ...

W moim modelu mam:

addedDate = models.DateTimeField(default=datetime.now) 
+0

oczywiście jest, tu jest wszystko linia

  • {{}} @ wpis.entry.UserID.username [{{wpis.entry.lastChangeDate | data: "D d MY"}}]
  • IProblemFactory

    +3

    Dziwne, działa dla mnie. Czy na pewno twoja ostatniaDzieńData to Django DateTime? – freiksenet

    +1

    Jest dodanyData nie dla lastChangeDate, dlatego się zastanawiam. – freiksenet

    Odpowiedz

    6

    Można to wykorzystać:

    addedDate = datetime.now().replace(microsecond=0)

    3

    Podejrzewam, że wpis.entry.lastChangeDate został w jakiś sposób przekształcony w ciąg znaków w widoku przed przybyciem do szablonu.

    Aby zweryfikować tę hipotezę, możesz po prostu sprawdzić w widoku, czy ma jakąś własność/metodę, którą mają tylko łańcuchy - na przykład na przykład wpis.entry.lastChangeDate.upper, a następnie sprawdzić, czy szablon się zawiesza.

    Można również utworzyć własny custom filter i użyć go do celów debugowania, umożliwiając sprawdzenie obiektu i zapisanie wyników kontroli na stronie lub po prostu na konsoli. Byłby w stanie sprawdzić obiekt i sprawdzić, czy rzeczywiście jest to DateTimeField.

    W przypadku niepowiązanego zawiadomienia, dlaczego nie chcesz użyć models.DateTimeField(auto_now_add=True) do ustawienia datetime na tworzenie?

    94

    To jest dokładnie to, co chcesz. Spróbuj tego:

    {{ wpis.entry.lastChangeDate|date:'Y-m-d H:i' }} 
    
    +22

    Szczegóły dotyczące wszystkich dostępnych opcji formatowania to: Dokumenty Django: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date –

    +0

    Uwaga: brak spacji po ':' i użycie prostego cudzysłowu ... – FaithReaper

    Powiązane problemy