Django serialize One to One
У меня есть модель с именем клиент, и в ней есть два внешних ключа. Одна из них относится к региону, а другая - к агенту. Я пытаюсь сериализовать всех клиентов. Использование use_natural_foreign_keys=True дает мне имя региона. Как я могу получить имя агента без использования DRF?
Модель:
class Agent(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Client(models.Model):
name = models.CharField(max_length=20, default="")
agent = models.ForeignKey("Agent", on_delete=models.CASCADE)
region = models.ForeignKey("Region", on_delete=models.CASCADE)
Вид:
class ClientLog(View):
page_limit = 100
def get_paginated_context(self, queryset, page, limit):
if not page: page = 1
if limit:
self.page_limit = limit
paginator = Paginator(queryset, self.page_limit)
page_obj = paginator.get_page(page)
serialized_page = serialize("json", page_obj.object_list, use_natural_foreign_keys=True)
serialized_page = [{**obj["fields"], **{"pk": obj["pk"]}} for obj in json.loads(serialized_page)]
return {
"data": serialized_page,
"pagination": {
"page": page,
"limit": limit,
"has_next": page_obj.has_next(),
"has_prev": page_obj.has_previous(),
"total": queryset.count()
}
}
def get(self, request, *args, **kwargs):
page = request.GET.get('page')
limit = request.GET.get('limit')
queryset = Client.objects.all()
to_return = self.get_paginated_context(queryset, page, limit)
return JsonResponse(to_return, status = 200)