我使用django-rest-framework在Django框架内创建Rest API。并且可以返回序列化器方法之外的任何char *
。
但是,我想知道是否有可能从Django 模型的validationError
方法返回错误并将其转换为django rest save()
?
例如,假设我想限制在特定表上创建对象。像这样:
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 ValueError
,但是它们都会在端点上导致500错误。但是我想在我的api视图中返回一个响应,例如说“已达到限制”
答案 0 :(得分:1)
DRF ValidationError
是在序列化程序中处理的,因此在调用模型的save方法并使用它引发ValiddationError
时应捕获任何预期的错误。
例如,您可以在序列化程序的save方法中执行此操作:
def save(self, **kwargs):
try:
super().save(**kwargs)
except ModelError as e:
raise serializers.ValidationError(e)
ModelError
是您在模型中提出的错误
答案 1 :(得分:0)