gpt4 book ai didi

Django:在模型 save() 方法中返回序列化程序验证错误

转载 作者:行者123 更新时间:2023-12-04 01:49:15 25 4
gpt4 key购买 nike

我使用 django-rest-framework 在 Django 框架中创建 Rest API。并且可以在序列化器方法旁边返回任何 validationError

但是,我想知道是否有可能从 django 模型 save() 方法返回错误并转换为 django rest validationError

例如,假设我想限制在特定表上创建对象。像这样:

class CustomTable(models.Model):
... # modles fields go here

def save():
if CustomTable.objects.count() > 2:
# Return a validationError in any serializer that is connected to this model.

注意 我可以使用 raise ValueErrorraise ValidationError ,但它们都会在端点上导致 500 错误。但我想在我的 api View 中返回一个响应,例如“达到限制”

最佳答案

DRF ValidationError 在序列化程序中处理,因此您应该在调用模型的 save 方法时捕获任何预期错误并使用它来引发 ValiddationError

例如,您可以在序列化程序的 save 方法中执行此操作:

def save(self, **kwargs):
try:
super().save(**kwargs)
except ModelError as e:
raise serializers.ValidationError(e)
ModelError 是您在模型中引发的错误

关于Django:在模型 save() 方法中返回序列化程序验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54061030/

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