django KeyError:如何在序列化程序的某个部分为空时排除某些部分

cu6pst1q  于 2022-11-19  发布在  Go
关注(0)|答案(1)|浏览(152)

我在我的序列化器中有这个片段,它使用了一个嵌套的序列化器字段。当我试图提交我的表单时,如果我没有在“assigned facilities”中添加任何内容,它将返回一个KeyError。我尝试添加一个else语句,但似乎没有帮助。调试器实际上是在抱怨第二行,当字段为空时,那么当assigned_facilities字段中没有提交数据时,我如何排除它?我已经在序列化器中使用required=False,allow_null=True。

def create(self, validated_data):
        assigned_facilities = validated_data.pop("assigned_facilities")
        instance = Lead.objects.create(**validated_data)

        for item in assigned_facilities:
            instance.leadfacility.create(**item)

        else:
            print("No Facilities Added!")
            
        return instance
mm5n2pyu

mm5n2pyu1#

可以在pop函数中添加默认值,这样就不会引发keyerror

def create(self, validated_data):
        assigned_facilities = validated_data.pop("assigned_facilities", [])
        instance = Lead.objects.create(**validated_data)

        for item in assigned_facilities:
            instance.leadfacility.create(**item)

        else:
            print("No Facilities Added!")
            
        return instance

相关问题