Django'str'对象在rest_framework中没有属性'values'

时间:2017-07-30 09:25:32

标签: python django django-rest-framework

当我使用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

基于该追溯,我不知道哪个部分缺失。

2 个答案:

答案 0 :(得分:5)

把它放在Meta:

class StoreSerializer(serializers.ModelSerializer):

class Meta:
    model = Store
    fields = '__all__'

specifying-fields

答案 1 :(得分:0)

将 Meta 子类中的字段设置为'__all__'