Django / error : Object of type *** is not JSON serializable



我已经看到这是一个常见的错误,在StackOverflow中有很多条目,但我无法将这一点连接起来。

在my views.py中,这个行得通

def start(request):
whichScene = request.session.get('whichScene')

myScene=Scenes.objects.get(name=whichScene)
scene_list=myScene.next.all()
return render(request,'scenes3d/start.html',
{'scene_list':scene_list})

这个不行:

def newPage (request, scene_slug):

sceneToRender = Scenes.objects.get(name=scene_slug)
return render(request,'scenes3d/new_scene.html',
{"myScene" :sceneToRender })

给出错误:

异常值:场景类型的对象不是JSON可序列化的

场景导入:

from .models import Scenes

models.py

class Scenes(models.Model):
name = models.SlugField('Scene name', max_length=60,unique=True)
description = models.TextField(blank=True)
fileGltf = models.FileField(null=TRUE, blank=False, upload_to="3dfiles/")

record_date = models.DateTimeField('Scene date')
manager = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True,
null=True,
on_delete=models.SET_NULL)

prev = models.ForeignKey(
'self', 
related_name='next',
blank=True,
null=True,
on_delete=models.SET_NULL)
def __str__(self):
return self.name

因为查询集sceneToRender = Scenes.objects.get(name=scene_slug)不是单个对象(这将是JSON序列化的),您需要通过使用以下方式访问values:

sceneToRender = Scenes.objects.get(name=scene_slug).values()

然后你可以渲染你的视图。

相关内容

最新更新