Django 1.8.4应用触发AssertionError,DRF序列化器配置报错求助
解决Django REST Framework ModelSerializer的AssertionError问题
嘿,这个问题其实是个超容易踩的拼写小坑!我一眼就看到你代码里的问题了——你把fields写成field了(少了末尾的字母s),DRF自然识别不到你指定的字段配置,所以才抛出这个“没有明确指定fields或exclude”的错误。
你的代码里的错误点
看这段序列化器的Meta类代码:
class Meta: model = Stock #field = ('ticker','volume') field = '__all__'
这里的field必须是复数形式的fields,少了s导致DRF无法识别你的字段设置,误以为你没配置任何字段规则。
修正后的完整代码
只需要把字段名改成正确的fields就可以解决问题:
from rest_framework import serializers from .models import Stock class StockSerializer(serializers.ModelSerializer): class Meta: model = Stock # 如果你只需要序列化特定字段,可以启用下面这行 # fields = ('ticker','volume') fields = '__all__'
额外补充说明
这个错误提示其实已经给了明确的指引——要求你添加explicit fields = '__all__',你已经写了,但因为拼写错误DRF没识别到。另外要注意:
- 从DRF 3.3.0版本开始,ModelSerializer必须明确指定
fields或者exclude,不能再省略这两个配置项 - 如果你不想序列化模型的所有字段,二选一即可:要么用
fields指定需要的字段列表,要么用exclude列出不需要序列化的字段
内容的提问来源于stack exchange,提问作者Nirdesh Kumar
相关产品推荐
相关产品推荐

