Skip to main content
 首页 » 编程设计

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

2025年05月04日22Free-Thinker

当我使用rest_framework实现api时

模型.py:

class Store(models.Model): 
 
    name = models.CharField(max_length=20) 
 
    notes = models.TextField(blank=True, default='') 
 
    def __str__(self): 
 
        return self.name 

我的应用程序/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) 

网址.py

    from .api import v1 
 
    urlpatterns = [ 
 
    url(r'^api/v1/', include(v1.urls)), 
 
    ] 

我遇到了以下回溯

AssertionError at /api/v1/store/ ("Creating a ModelSerializer without either the 'fields' attribute or the 'exclude' attribute has been deprecated since 3.3.0, and is now disallowed. Add an explicit fields = 'all' to the StoreSerializer serializer.",)

所以我添加了 fields = '__all__' 来修复这个错误

class StoreSerializer(serializers.ModelSerializer): 
 
   fields = '__all__' 
 
   class Meta: 
       model = Store 

但接下来我遇到了这个traceback

根据回溯,我不知道缺少哪一部分。

请您参考如下方法:

将其放入 Meta 中:

class StoreSerializer(serializers.ModelSerializer): 
 
    class Meta: 
        model = Store 
        fields = '__all__' 

specifying-fields