Python Django TypeError:“;“用户”;对象不可编辑在序列化过程中弹出

Python Django TypeError:“;“用户”;对象不可编辑在序列化过程中弹出,python,django,api,serialization,django-rest-framework,Python,Django,Api,Serialization,Django Rest Framework,我的django项目有问题。我使用的是django rest框架,在序列化过程中我好像做错了什么。问题是: 我有一个APIview,它应该向用户返回一个JSON,该用户应该通过令牌进行身份验证。此json应包含当前用户类的列表。以下是代码: class StudentTodayScheduleView(views.APIView): """ API that returns JSON with schedule for user who is requesting """

我的django项目有问题。我使用的是django rest框架,在序列化过程中我好像做错了什么。问题是:

我有一个APIview,它应该向用户返回一个JSON,该用户应该通过令牌进行身份验证。此json应包含当前用户类的列表。以下是代码:

class StudentTodayScheduleView(views.APIView):
    """
    API that returns JSON with schedule for user who is requesting
    """
    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAuthenticated, )

    def get(self, request, format=None):
        user = request.user
        usergroup = ProfileModel.objects.filter(user=user)[0].student_group
        current_weekday = datetime.date.today().weekday()  # integer 0-monday .. 6-Sunday
        today = WorkingDay.objects.get(dayoftheweeknumber=current_weekday)

        todaysdate = datetime.date.today()
        weektype = get_weektype(todaysdate)

        classes_for_today = Para.objects.filter(para_group=usergroup, para_day=today, week_type=weektype)
        result = dict()
        for para in classes_for_today:
                result.update(ParaSerializer(para).data)

        return Response(result, status=status.HTTP_200_OK)
这是副喷雾器:

class ParaSerializer(serializers.ModelSerializer):
    para_subject = DisciplineSerializer()
    para_room = RoomSerializer()
    para_professor = ProfileSerializer(read_only=True)
    para_number = ParaTimeSerializer()
    para_day = WorkingDaySerializer()
    # para_group = StudentGroupSerializer()

    class Meta:
        model = Para
        fields = (
            'para_subject',
            'para_room',
            'para_professor', 
            'para_number',
            'para_day',
            'para_group',
            'week_type'
    )
以下是console显示的内容:

ProfileModel是添加到默认django用户模型的附加模型。ProfileModel具有用户的OneToOneField

如果我尝试在shell中序列化Para对象,则可以。但是,如果我试图从序列化的para对象中取出数据,我会得到与您在屏幕截图上看到的相同的错误。 另外,如果我在序列化程序类中注释掉para_professor字段,我不会得到错误

请解释我做错了什么

谢谢你抽出时间 塔拉斯

更新:

参数模型、用户和配置文件序列化程序:

class Para(models.Model):

    class Meta(object):
        verbose_name = u"Class"
        verbose_name_plural = u"Classes"

    para_subject = models.ForeignKey(
        'Disciplines',
        blank=True,
        null=True,
        verbose_name=u"Discipline"
    )
    para_room = models.ForeignKey(
        'Rooms',
        blank=True,
        null=True,
        verbose_name=u"Room"
    )
    para_professor = models.ForeignKey(
        'students.ProfileModel',
        blank=True,
        null=True,
        verbose_name=u"Professor"
    )
    para_number = models.ForeignKey(
        'ParaTime',
        blank=True,
        null=True,
        verbose_name=u"Class Starts/Ends"
    )
    para_day = models.ForeignKey(
        WorkingDay,
        blank=True,
        null=True,
        verbose_name=u"Working day")

    para_group = models.ForeignKey(
        'StudentGroupModel',
        blank=True,
        null=True,
        verbose_name=u"Student Group"
    )
    week_type = models.BooleanField(
        default=True,
        verbose_name=u"Is week even"
    )

    def __unicode__(self):
        return u"%s %s" % (self.para_subject, self.para_room)


class UserSerializer(serializers.ModelSerializer):
    groups = GroupSerializer(read_only=True, many=True)
    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'groups',
            'first_name',
            'last_name'
        )


class ProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True, many=True)

    class Meta:
        model = ProfileModel
        fields = (
            'user',
            'is_student',
            'student_group',
            'middle_name',
            'contact_phone',
            'photo',
            'started_date'
        )

您的ProfileSerializer使用
many=True
定义
user
,但每个配置文件只有一个用户。

您的ProfileSerializer使用
many=True
定义
user
,但每个配置文件只有一个用户。

您可能应该显示您的模型定义,以及UserSerializer的代码。您可能应该显示您的模型定义,以及UserSerializer的代码。