在Django中序列化Object时出现断言错误



在Django中,我想(通过Rest)序列化一个Lecteur对象,它看起来像这样:

from django.db import models
from django.contrib.auth.models import User
class Lecteur(User):
    bibliotheque = models.ManyToManyField('bibliotheque.Livre')

和序列化程序:

from rest_framework import serializers
from .models import Lecteur
from bibliotheque.serializers import LivreSerializer
class LecteurSerializer(serializers.ModelSerializer):
    bibliotheque = LivreSerializer(source='bibliotheque')
    class Meta:
        model=Lecteur
        fields = ('bibliotheque')

问题是,当我评估这条线时,我有一个AssertionError在我看来serializer = LecteurSerializer(lecteur)

@csrf_exempt
def bibliotheque(request, id):
    """
    Show user's bibliotheque w id    
    """
    try:
        lecteur = Lecteur.objects.get(id=id)
    except Lecteur.DoesNotExist:
        return HttpResponse(status=404)
    if request.method == 'GET':
        serializer = LecteurSerializer(lecteur)
        return JSONResponse(serializer.data)

首先,您应该提供完整的回溯,这样我们就可以在不重新创建所有环境的情况下深入研究问题。这是常识。

问题是:

fields = ('bibliotheque')

正如断言错误所说,字段应该是列表或元组,或者其他可迭代字段。

在这里,您应该强调一件事:Python元组语法与操作顺序语法冲突。因此,('a') == 'a'。要创建一个由一个元素组成的元组,您应该使用一个破解:('a',)。注意逗号!

所以,如果你的情况,修复将是:

fields = ('bibliotheque',)

最新更新