Django 通过 JSON 响应获取主键
Django get primary key with JSON response
如何通过 JSON 响应发送每个对象的主键?
我正在发送 json 响应以根据用户状态修改 table。一切正常,除了无法获得与每个用户关联的 PK。
目前正在发送除 PK 之外的所有值。
class UserByState(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)
serialized_page = [obj["fields"] 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):
user = self.request.user
page = request.GET.get('page')
limit = request.GET.get('limit')
state = request.GET.get('state')
queryset = User.objects.all()
if state and state != "all":
queryset = queryset.filter(state=state)
to_return = self.get_paginated_context(queryset, page, limit)
return JsonResponse(to_return, status = 200)
我觉得这个理解可能会失去一些价值
serialized_page = serialize("json", page_obj.object_list)
当您在这里拨打 ['fields']
时:
serialized_page = [obj["fields"] for obj in json.loads(serialized_page)]
您只获得键 'fields' 的值。就像标准词典一样。
fields = {"first_name": "Dan", "last_name": "ram", "address": "6090 DRAGON WAY", "city": "CREST", "state": "CA", "zipcode": 91912}
试试看:
serialized_page = serialize("json", page_obj.object_list)
serialized_page = [{**obj["fields"], **{"pk": obj["pk"]}} for obj in json.loads(serialized_page)]
如何通过 JSON 响应发送每个对象的主键? 我正在发送 json 响应以根据用户状态修改 table。一切正常,除了无法获得与每个用户关联的 PK。
目前正在发送除 PK 之外的所有值。
class UserByState(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)
serialized_page = [obj["fields"] 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):
user = self.request.user
page = request.GET.get('page')
limit = request.GET.get('limit')
state = request.GET.get('state')
queryset = User.objects.all()
if state and state != "all":
queryset = queryset.filter(state=state)
to_return = self.get_paginated_context(queryset, page, limit)
return JsonResponse(to_return, status = 200)
我觉得这个理解可能会失去一些价值
serialized_page = serialize("json", page_obj.object_list)
当您在这里拨打 ['fields']
时:
serialized_page = [obj["fields"] for obj in json.loads(serialized_page)]
您只获得键 'fields' 的值。就像标准词典一样。
fields = {"first_name": "Dan", "last_name": "ram", "address": "6090 DRAGON WAY", "city": "CREST", "state": "CA", "zipcode": 91912}
试试看:
serialized_page = serialize("json", page_obj.object_list)
serialized_page = [{**obj["fields"], **{"pk": obj["pk"]}} for obj in json.loads(serialized_page)]