我从不使用这样的FieldFile。我不知道为什么会出现这个消息。
无论如何,我在下面展示了我的相关代码片段,Models.py>
class MW_part(models.Model):
name = models.CharField(max_length=100)
code = models.CharField(max_length=100, null=True, blank=True)
manufacture = models.CharField(max_length=50, null=True, blank=True)
spec = models.TextField(max_length=1024, null=True, blank=True)
infoLink = models.URLField(null=True, blank=True)
imgPath = models.FileField(upload_to='static/part_images', null=True, blank=True)
price = models.PositiveIntegerField(default=0, null=True, blank=True)
def __str__(self):
return self.name
def save(self, *args, **kwargs):
for var in vars(self):
if not var.startswith('_'):
if self.__dict__[var] == '':
self.__dict__[var] = None
super(MW_part, self).save(*args, **kwargs)
views.py>类MW_partsList(视图):
def get(self, request, offset, limit):
resultModel = {}
partList = {}
partItem = []
for row in MW_part.objects.raw('SELECT * FROM parts_mw_part limit %s, %s' %(offset, limit)):
part_rec = {}
part_rec['name'] = row.name
part_rec['price'] = row.price
part_rec['code'] = row.code
part_rec['manufacture'] = row.manufacture
part_rec['spec'] = row.spec
part_rec['infoLink'] = row.infoLink
part_rec['imgPath'] = row.imgPath
partItem.append(part_rec)
partList['partList'] = partItem
partList['partCount'] = MW_part.objects.count()
resultModel['resultModel'] = partList
resultModel['resultStatus'] = { 'success' : 'True', 'error' : '', 'message' : '' }
return JsonResponse(resultModel)
回溯>
Traceback:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
132.response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/views/generic/base.py" in view
71.return self.dispatch(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
89.return handler(request, *args, **kwargs)
File "/Users/sangwonlee/PycharmProjects/MW_Service/parts/views.py" in get
39.return JsonResponse(resultModel)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/http/response.py" in __init__
535.data = json.dumps(data, cls=encoder)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/__init__.py" in dumps
237.**kw).encode(obj)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/encoder.py" in encode
192.chunks = self.iterencode(o, _one_shot=True)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/encoder.py" in iterencode
250.return _iterencode(o, 0)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/serializers/json.py" in default
112.return super(DjangoJSONEncoder, self).default(o)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/encoder.py" in default
173.raise TypeError(repr(o) + " is not JSON serializable")
Exception Type: TypeError at /parts/list/0/10
Exception Value: <FieldFile: None> is not JSON serializable
请给我一些帮助或其他好的方法。
我现在已经修好了。现在我想和大家分享一下。下面参考。
views.py>
class MW_partsList(View):
def get(self, request, offset, limit):
resultModel = {}
partList = {}
partItem = []
for row in MW_part.objects.raw('SELECT * FROM parts_mw_part LIMIT %s, %s' %(offset, limit)):
part_rec = {}
part_rec['name'] = row.name
part_rec['price'] = row.price
part_rec['code'] = row.code
part_rec['manufacture'] = row.manufacture
part_rec['spec'] = row.spec
part_rec['infoLink'] = row.infoLink
try:
part_rec['imgPath'] = row.imgPath.url
except:
part_rec['imgPath'] = None
partItem.append(part_rec)
partList['partList'] = partItem
partList['partCount'] = MW_part.objects.count()
resultModel['resultModel'] = partList
resultModel['resultStatus'] = { 'success' : 'True', 'error' : '', 'message' : '' }
logger.debug("JSON Making up complete.")
return JsonResponse(resultModel)