gpt4 book ai didi

python - Django Rest Framework : Access primary key of field in serializer. is_valid -> 序列化器.错误

转载 作者:行者123 更新时间:2023-12-01 09:30:52 31 4
gpt4 key购买 nike

我需要访问默认 Django 错误消息中字段的 PK/ID。

我需要这个,因为我添加/更新多个字段。

如何显示哪条数据失败?

这是我的问题的一个简单用例。我有一个简单的模型:

class User(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)

还有一个基本的序列化器:

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('__all__')

现在,有时,当使用以下函数添加用户列表时,我会收到错误:

def add_users(data):
serializer = UserSerializer(
data=data, many=True)
if serializer.is_valid():
serializer.save()
else:
for index in range(0, len(serializer.errors)):
logger.error("Validation failed: {0}".format(serializer.errors[index]))

错误默认显示如下:

Validation failed: {'name': ['This field may not be null.']}

Validation failed: {'name': ['This field may not be null.']}

但我的列表中有 100 个不同的用户。

我想知道触发错误的人的 PK/id 值。我怎样才能做到这一点?

最佳答案

serializer.save() 方法保存单个对象。并且序列化器中的many=True与写入操作无关。如果您的数据包含多个用户数据,请尝试这样的操作

def add_users(data):
users = []
for user_data in data:
serializer = UserSerializer(data=data)
serializer.is_valid(raise_exception=True)
user = serializer.save()
users.append(user)
return Response(data=UserSerializer(users, many=True).data)

关于python - Django Rest Framework : Access primary key of field in serializer. is_valid -> 序列化器.错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49978649/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com