【发布时间】:2020-02-13 07:27:48
【问题描述】:
如果我在某些字段中输入错误,我该如何抛出serializer.errors?我是必须编写一些“逻辑”,还是只需要编写一些“配置”。
#models.py
class Product(models.Model):
name = models.CharField()
amount = models.IntegerField()
description = models.TextField()
#serializers.py
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
def create(self, validated_data):
...
def update(self, instance, validated_data):
...
#views.py
class ProductViewSet(viewsets.ModelViewSet):
serializer_class = ProductSerializer
def partial_update(self, request, pk=None):
...
def get_queryset(self):
...
例如我想发帖:
{
"name": "Banana",
"amount": "ABCD",
"description": ""
}
而不是在服务器中收到错误:
ValueError: invalid literal for int() with base 10: 'ABCD'
我想要这样的回应:
{"amount": ["A valid integer is required."], "description": ["This field may not be blank."]}
【问题讨论】:
-
根据模型结构,DRF 将负责基本验证。如果您想要更详细的验证,请使用
validate()方法 -
如何“配置”基本验证?怎么不还给我?
-
我的视图中没有
def create()。 -
你的观点看起来不错,你能添加完整的错误回溯吗?
-
这是一个错误,因为我没有 IntegerField() 的有效输入
标签: django django-rest-framework