帮助通过列表将多个对象传递到Djang中的Jsonresponse

2024-09-27 21:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django中有一个代码,其中选择了5个随机数,然后基于这5个数字,从数据库中再进行5个查询。一个这样做了,我想通过json将数据库中的所有5个对象传递给模板,但是我不确定如何继续。这就是我现在所拥有的:

class multiplePull(TemplateView):
template_name = 'gacha/multiplePull.html'

def randomStar(self):
    choice = [5,4,3]
    probability = [0.1, 0.2, 0.7]
    star = random.choices(choice, probability)
    return star[0]

def post(self, request):
    multi = []
    characters = []
    for x in range(5):
        star = self.randomStar()
        multi.append(star)

    for star in multi:
        character = Characters.objects.filter(stars=star).order_by('?')[:1]
        for obj in character:
            characters.append(obj)

    return JsonResponse(json.dumps(characters), safe=False)

现在我得到了以下错误:

^{pr2}$

我怎么做才能让它成功呢?我想我还是遗漏了一些东西,但找不到解决办法。当我简单地将它作为上下文数据发送时,这种方法很好,但我不知道如何通过Json传递所有5个对象。我会很感激你的帮助。在

谢谢你。在


Tags: 对象inself数据库jsonforreturndef
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:05

代码的问题是queryset(以及其中包含的模型对象)不能自动序列化为JSON。在

你得想办法做那件事。例如,like DRF uses serializers。在

如果您认为这对于您的用例来说太多了,那么您可以通过将QuerySet转换为一个列表(list(characters))然后将其中的每个元素转换为包含您希望包含在响应中的字段的字典,从而使代码正常工作。在

相关问题 更多 >

    热门问题