gpt4 book ai didi

django-rest-framework - 如何在 Django Rest Framework 3 中覆盖 ModelViewSet 的 get_queryset?

转载 作者:行者123 更新时间:2023-12-04 00:46:51 27 4
gpt4 key购买 nike

我曾经在 Django Rest Framework (DRF) 2 中遵循这种模式:

class Foo(models.Model):
user = models.ForeignKey(User)

class FooSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Foo
fields = ('url')

class FooViewset(viewsets.ModelViewSet):
def get_queryset(self):
return Foo.objects.filter(user=self.request.user)
serializer = FooSerializer
model = Foo # <-- the way a ModelViewSet is told what the object is in DRF 2

[ in urls.py]
from rest_framework import routers
router = routers.DefaultRouter()
router.register('Foo', views.FooViewSet)

在 DRF 3 中,我现在得到:
AssertionError at /
`base_name` argument not specified, and could not automatically
determine the name from the viewset, as it does not have a
`.queryset` attribute.

怎么样 get_queryset覆盖 rest_framework.viewsets.ModelViewSet 的实例?

最佳答案

想通了这一点。 model领域rest_framework.viewsets.ModelViewSet在 DRF3 中似乎是 AWOL。现在,如果您覆盖 get_queryset您需要为 routers.DefaultRouter().register 指定第三个参数这是 basename范围。然后,该函数不会关闭并尝试在不存在的 queryset 上找到它。领域ModelViewSet .

例如

router = routers.DefaultRouter()
[...]
router.register('/rest/FooBar'/, views.FooBarViewSet, 'foobar-detail')
#^^^^^^^^^^^^^^^

关于django-rest-framework - 如何在 Django Rest Framework 3 中覆盖 ModelViewSet 的 get_queryset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29001493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com