【问题标题】:Django serializer update method key error in validated_data验证数据中的 Django 序列化程序更新方法键错误
【发布时间】:2021-10-09 15:45:30
【问题描述】:

我正在使用 django rest 框架为多个应用程序提供 api。与这些应用程序共享的单个模型。每个应用程序都在使用一些其他应用程序没有使用的字段。我必须在序列化程序上编写更新方法,并根据从这些应用程序收到的字段值采取行动。当我编写更新方法时,如果 django 没有找到任何键,它会抛出错误。让我们看看代码: 型号:

class TaskChecker(models.Model):
    taskName=models.CharField(max_length=50)
    notified = models.BooleanField (default=False)
    isDeleteRequest = models.BooleanField (default=False)
    isDeactivateMe = models.BooleanField (default=False)
    isActive = models.BooleanField (default=False)


class TaskSerializer(serializers.ModelSerializer):
    class Meta:
        model=TaskChecker
        fields='__all__'
    
    def update(self, instance, validated_data):
        isDeleteRequest = validated_data['isDeleteRequest']
        do some task
        isActive= validated_data['isActive']
        do some task

现在的情况是,我将获得validated_data['isDeleteRequest'] 或validated_data['isActive']。在这种情况下,我得到关键错误。如何解决问题?如果我当时没有拿到钥匙,我不应该得到错误。请帮忙。非常感谢……

【问题讨论】:

    标签: django django-models django-rest-framework django-views django-serializer


    【解决方案1】:

    在 TaskSerializer 中使用 dict get 方法。

    class TaskSerializer(serializers.ModelSerializer):
        class Meta:
            model=TaskChecker
            fields='__all__'
        
        def update(self, instance, validated_data):
            isDeleteRequest = validated_data.get('isDeleteRequest', False)
            do some task
            isActive= validated_data.get('isActive', False)
            do some task
    

    【讨论】:

    • 使用validated_data.get('isDeleteRequest', False) 代替validated_date['isDeleteRequest'] 有效
    • 谢谢它的工作
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2020-08-14
    • 2019-08-28
    相关资源
    最近更新 更多