Tôi có API REST Django này mà tôi muốn tùy chỉnh kết quả truy vấn danh sách cho phản ứng json. Lý do là do định dạng ngày và định dạng có khả năng khác.django phần còn lại khung danh sách truy vấn tùy chỉnh json mảng phản ứng kết quả vì ngày hình thành
Đây là API Rest, vấn đề được tạo_at Tôi muốn nó được định dạng như sau: ('% Y-% m-% d% H:% M'). Đoạn mã sau không có bất kỳ định dạng nào, nó sẽ chỉ liệt kê và tạo một json trên kết quả.
@api_view(['POST'])
def employee_get_list_by_page(request):
val_params = ["id", "username","first_name","last_name","created_at"]
employee_list = Employee.objects.all().values(*val_params).order_by('id')
page = request.GET.get('page', request.POST['page'])
paginator = Paginator(employee_list, request.POST['page_limit'])
try:
employees = paginator.page(page)
except PageNotAnInteger:
employees = paginator.page(request.POST['page'])
except EmptyPage:
employees = paginator.page(paginator.num_pages)
return Response(list(employees), status=status.HTTP_200_OK)
Đây là mô hình. Lưu ý rằng tôi có hàm .as_dict(). Đối với hồ sơ cá nhân như sử dụng emp = Employee.objects.get (id = 6), tôi có thể làm như thế này emp.as_dict() và kết quả sẽ có ngày được định dạng trong created_at.
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee')
company = models.ForeignKey(Company)
username = models.CharField(max_length=30, blank=False)
first_name = models.CharField(max_length=30, blank=False)
last_name = models.CharField(max_length=30, blank=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.user.username
def as_dict(self):
return {"id": "%d" % self.id,
"username": self.username if self.username else "",
"first_name": self.first_name if self.first_name else "",
"last_name": self.last_name if self.last_name else "",
"created_at":self.created_at.strftime('%Y-%m-%d %H:%M')}
Đây là kết quả phản hồi json của danh sách. Lưu ý ngày không được định dạng.
[
{
"id": 7,
"username": "mick",
"first_name": "zack",
"last_name": "ray",
"created_at": "2017-12-07T10:09:28.376427Z" <-- I want this to be ('%Y-%m-%d %H:%M')
},
{
"id": 8,
"username": "hu",
"first_name": "rar",
"last_name": "baw",
"created_at": "2017-12-10T09:08:27.473997Z"
}
]
Câu hỏi: Làm cách nào tôi có thể trả lời danh sách json với định dạng tôi muốn?
tại sao django nên sử dụng 'phương pháp as_dict' của bạn trong paginator? –
Hey @Axil, tôi đã tự hỏi, đã làm bất kỳ câu trả lời đã giúp bạn? – Satendra
xin lỗi tôi đã rất bận rộn. Hãy thử nó. – Axil