簡體   English   中英

在 Django 中調用 AJAX 后更改日期時間格式

[英]Change date time format after AJAX call in Django

我有以下數據表:

$('#table').DataTable( {
    responsive: true,
    autowidth: false,
    destroy: true,
    deferRender: true,
    ajax: {
        url: '/ajax_view/',
        type: 'GET',
        data: {},
        dataSrc: ""
    },
    columns: [
        {"data": "fields.filename"},
        {"data": "fields.uploaded"},
        {"data": "fields.updated"},
        {"data": "fields.user"},
        {"data": "pk"},
    ],
    columnDefs: [
        { className: 'text-center', targets: [1] },
        {
            targets: [0],
            class: 'text-center',
            orderable: true,
            render: function (data, type, row) {
                var filename =  data.replace(/^[^/]*\//,'');
                var buttons = '<a class="file-links" href="/media/'+data+'" target="_blank">'+filename+'</a>';
                return buttons;
            }
        },
        {
            targets: [-1],
            class: 'text-center',
            orderable: false,
            render: function (data, type, row) {
                var buttons = '<button type="button" value="'+data+'" class="btn btn-danger fileId"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="white" class="bi bi-trash-fill" viewBox="0 0 16 16"><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0z"/></svg></button>';
                return buttons;
            }
        },
    ],
    order: [
        [0, 'asc']
    ],
    "pagingType": "numbers",
    dom: 'rtp'
});

它工作得很好,但日期時間格式不是我想要的。

我得到這個:

2022-01-05T10:51:06.360

但我想要類似的東西:

05/01/2022 10:51 ( DD/MM/YYYY HH:MM )

這是 Django 視圖:

@login_required
def ajax_view(request):
    response = dict()
    if request.method == 'GET':
        files = File.objects.all().filter(user=request.user)
        data = serialize("json", files)
        return HttpResponse(data, content_type="application/json")
    return HttpResponse('')

File model:

class File(models.Model):
    filename = models.FileField(null=True, blank=True, upload_to=user_directory_path)
    user = models.ForeignKey(
        User,
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
    )
    uploaded = models.DateTimeField(auto_now_add=True, blank=True)
    updated = models.DateTimeField(auto_now_add=True, blank=True)

    def delete(self, *args, **kwargs):
        self.filename.delete()
        super().delete(*args, **kwargs)

到目前為止我沒有成功的嘗試:

,
{
    targets: [1],
    orderable: true,
    render: function (data, type, row) {
        var uploaded_date =  data;
        //manipulate data
        return buttons;
    }
},
{
    targets: [2],
    orderable: true,
    render: function (data, type, row) {
        var updated_date =  data;
        //manipulate data
        return buttons;
    }
},

//manipulate data部分是我不知道該怎么做的。

您可以像這樣在查詢本身中獲取格式化的日期:

from django.db.models import F, Func, Value, CharField

files = File.objects.filter(user=request.user).annotate(
            formatted_date=Func(
                F('uploaded'),
                Value('dd.MM.yyyy hh:mm'),
                function='to_char',
                output_field=CharField()
           )
        )

以上是 MySql 的 Postgres,您將to_char替換為FORMAT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM