How to get django queryset results with formatted datetime field

后端 未结 3 1951
無奈伤痛
無奈伤痛 2021-01-18 12:14

I\'ve Django model which has foreign keys associated with other models. Each model is having same field names(attributes) created_at and updated_at

In every django q

相关标签:
3条回答
  • 2021-01-18 12:37

    Solved it via @Yannics answer at: https://stackoverflow.com/a/60924664/5804947

    This also avoids using extra which should be "a last resort" due to Django docs.

    from django.db.models import F, Func, Value, CharField
    
    qs.annotate(
      formatted_date=Func(
        F('created_at'),
        Value('DD-MM-YYYY HH:MM:SS'),
        function='to_char',
        output_field=CharField()
      )
    )
    
    0 讨论(0)
  • 2021-01-18 12:43

    I don't think values() function would anything related to formatting datetime result. But why does that bother you? Can't you convert them to proper format when you try to display them? If you try to render them in the template, django has template filter date for formatting your datetime value: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#date

    0 讨论(0)
  • 2021-01-18 12:49

    Got the solution.

    data = list(Model.objects.extra(select={'date':"to_char(<DATABASENAME>_<TableName>.created_at, 'YYYY-MM-DD hh:mi AM')"}).values_list('date', flat='true')
    

    It's not just tablename.attribute, it should be dbname_tablename.attribute when we have multiple databases(ambiguous)

    which will result list of created_at datetime values trimmed to 'YYYY-MM-DD HH:MM' format.

    0 讨论(0)
提交回复
热议问题