Mam to Django REST API, które chcę dostosować wynik kwerendy listy dla odpowiedzi json. Powodem jest formatowanie daty i potencjalnie również inne formatowanie.Zapytanie o listę ram Django spersonalizuj odpowiedź wynikową tablicy json z powodu daty formowania
To jest interfejs API odpoczynku, problem został utworzony. Chcę go sformatować w następujący sposób: ("% Y-% m-% d% H:% M"). Poniższy kod nie ma żadnego formatowania, po prostu wyświetli listę i utworzy json na wyniku.
@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)
To jest model. Zauważ, że mam funkcję .as_dict(). Dla pojedynczego rekordu, takiego jak emp = Employee.objects.get (id = 6), mogę zrobić to tak emp.as_dict(), a wynik będzie miał sformatowaną datę w 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')}
To jest odpowiedź json z listy. Zwróć uwagę, że data nie jest sformatowana.
[
{
"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"
}
]
Pytanie: Jak mogę uzyskać odpowiedź listy json z żądanym formatowaniem?
dlaczego Django należy użyć 'metody as_dict' w paginator? –
Hej @ Asil, zastanawiałem się, czy jakaś odpowiedź ci pomogła? – Satendra
Przepraszam, byłam bardzo zajęta. Spróbuj. – Axil