找了这么久,终于找到了。感谢大佬:https://www.cnblogs.com/gcgc/p/11320636.html
之前序列化的时候一直使用Django自带的序列化器--serializers.serialize('json', queryset),可是它会自动过滤掉很多字段,只剩下pk即主键字段,导致所需字段获取不了。(就是方法三,具体样式下方会有)
终于!!!!!苍天不负有心人吖,终于找到方法了。
models.py文件:
# RESFUL_DJ/app/models.pyfrom django.db import models
# Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length=32, verbose_name='名称', unique=True)
address = models.CharField(max_length=128, verbose_name='地址')
def __str__(self):
return self.name
class Meta:
db_table = 'db_publisher'
verbose_name = "出版商"
verbose_name_plural = verbose_name
数据库内容:
获取数据库中的所有数据,以json的格式传给前端。
来了来了,他来了
方法一:
from django.http import HttpResponse
from app import models
def publisher_list(request):
'''
通过不同的方法,展示所有的出版社对象
:param request: 请求
:return: 出版社对象
'''
queryset = models.Publisher.objects.all()
# 方法一
data = []
# 这个方法的缺点就是:
# 如果字段多了的话,就需要一个一个去写,会很麻烦
# 返回的是字典类型,所以需要json转换成json格式字符串
for i in queryset:
p_tmp = {
"name": i.name,
"address": i.address
}
data.append(p_tmp)
import json
return HttpResponse(json.dumps(data), content_type='application/json')
结果:
方法二:
from django.http import HttpResponse
from app import models
def publisher_list(request):
'''
通过不同的方法,展示所有的出版社对象
:param request: 请求
:return: 出版社对象
'''
queryset = models.Publisher.objects.all()
# 方法二
data = []
# django自带的模型转字典方法
# 缺点就是图片之类的文件无法转换
# 返回的是字典类型,所以需要json转换成json格式字符串
from django.forms.models import model_to_dict
for i in queryset:
data.append(model_to_dict(i))
import json
return HttpResponse(json.dumps(data), content_type='application/json')
结果:
方法三:(就是他,弄我好久)
from django.http import HttpResponse
from app import models
def publisher_list(request):
'''
通过不同的方法,展示所有的出版社对象
:param request: 请求
:return: 出版社对象
'''
queryset = models.Publisher.objects.all()
# 方法三
# 导入django自带的序列化器
# # 返回的是json字符串,不需要再用json转换一次了
from django.core import serializers
data = serializers.serialize('json', queryset)
return HttpResponse(data, content_type='application/json')
结果:(fields字段获取不了,或者说获取很麻烦)