[英]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.