当我使用rest_framework来实现api
时models.py:
class Store(models.Model):
name = models.CharField(max_length=20)
notes = models.TextField(blank=True, default='')
def __str__(self):
return self.name
的myapp / api.py:
class StoreSerializer(serializers.ModelSerializer):
class Meta:
model = Store
class StoreViewSet(viewsets.ModelViewSet):
queryset = Store.objects.all()
serializer_class = StoreSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
项目/ api.py
v1 = routers.DefaultRouter()
v1.register('store',StoreViewSet)
v1.register('stores/menu_item',MenuItemViewSet)
urls.py
from .api import v1
urlpatterns = [
url(r'^api/v1/', include(v1.urls)),
]
我遇到了以下追溯
/ api / v1 / store /中的AssertionError (“自3.3.0以来,不建议使用没有'fields'属性或'exclude'属性的ModelSerializer,现在不允许使用。添加显式字段='所有'到StoreSerializer序列化程序。“,)
所以我添加fields = '__all__'
来修复此错误
class StoreSerializer(serializers.ModelSerializer):
fields = '__all__'
class Meta:
model = Store
但接下来我遇到了这个traceback
基于该追溯,我不知道哪个部分缺失。
答案 0 :(得分:5)
把它放在Meta:
class StoreSerializer(serializers.ModelSerializer):
class Meta:
model = Store
fields = '__all__'
答案 1 :(得分:0)
将 Meta 子类中的字段设置为'__all__'