Django: как отформатировать время (чч: мм: сс) при отображении в JSON? - PullRequest
0 голосов
/ 27 января 2020

Я экономлю время в названии модели Heures и отображаю его с помощью библиотеки WebDataRocks, которая принимает JSON

. При этом данные отображаются в следующем формате: 08: 20: 34.234617

Как Могу ли я отобразить его 08: 20: 34?

views.py

def index(request):
    data = json.dumps(list(Heures.objects.values('heu_ide','heu_dat','heu_cod','date_id__jou_dat','heu_com','user_id__user__username')), indent=4, sort_keys=True, default=str)


    print(data)
    return render(request, 'export/index.html', {'data':data})```

models.py

class Heures(models.Model):

    _safedelete_policy = SOFT_DELETE_CASCADE
    heu_ide = models.AutoField(primary_key=True)
    date = models.ForeignKey(Jours, on_delete = models.CASCADE, null=True)
    user = models.ForeignKey(Profile, on_delete = models.CASCADE, null=True)
    heu_dat = models.TimeField("Heure du pointage", null=True, blank=True,auto_now_add=True)
    heu_cod = models.IntegerField("Code employé", null=True, blank=True)    
    heu_com = models.CharField("Commentaires", max_length = 150, null=True, blank=True)
    log = HistoricalRecords()

    class Meta:

        db_table = 'crf_heu'
        verbose_name_plural = 'Heures'
        ordering = ['heu_ide']

    def __str__(self):

        return f"{self.heu_dat}"

1 Ответ

1 голос
/ 27 января 2020

Вы должны использовать функцию strftime() python для форматирования своего времени, например:

def __str__(self):
    return self.heu_dat.strftime("%H:%M:%S")

Для вывода json вам потребуется l oop сначала через список, преобразуя значение heu_dat с помощью strftime(), прежде чем выполнить json.dumps().

Или, если вы хотите соединить значение напрямую при извлечении его из базы данных, вы можете использовать TruncSecond функция базы данных для аннотирования вашего запроса значением с более низкой точностью:

qs = Heure.objects.annotate(heure=TruncSecond('heu_dat', output_field=TimeField())
data = json.dumps(list(qs.values('heu_ide','heure','heu_cod','date_id__jou_dat','heu_com','user_id__user__username')), indent=4, sort_keys=True, default=str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...