1

我在模型名称 Heures 中节省时间并使用接受 JSON 的 WebDataRocks 库显示它

这样做,数据以这种格式显示:08:20:34.234617

我怎么能显示它 08:20:34?

视图.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})```

模型.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}"
4

1 回答 1

2

您应该使用strftime()python 函数来格式化您的时间,例如:

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

对于 json 输出,您必须先遍历列表,然后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)
于 2020-01-27T15:41:21.540 回答