Django 如何排除DRF路由器重复URL故障
我正在尝试设置一系列Django Rest框架URL 下面是我的序列化程序/视图集的组成Django 如何排除DRF路由器重复URL故障,django,django-rest-framework,Django,Django Rest Framework,我正在尝试设置一系列Django Rest框架URL 下面是我的序列化程序/视图集的组成 class ModelSerializer(serializers.HyperlinkedModelSerializer): schemas = SchemaSerializer(many=True, read_only=True) class Meta: model = dbModels fields = ('ModelName', 'pk', 'schem
class ModelSerializer(serializers.HyperlinkedModelSerializer):
schemas = SchemaSerializer(many=True, read_only=True)
class Meta:
model = dbModels
fields = ('ModelName', 'pk', 'schemas')
class ModelViewSet(viewsets.ModelViewSet):
queryset = dbModels.objects.all()
serializer_class = ModelSerializer
class ModelListSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = dbModels
fields = ('ModelName', 'pk')
class ModelListViewSet(viewsets.ModelViewSet):
queryset = dbModels.objects.all()
serializer_class = ModelListSerializer
这是我的路由器列表:
从datagenerator.serializer导入UserViewSet\
ModelViewSet,ModelListViewSet
router = routers.DefaultRouter()
router.register(r'models', ModelViewSet)
router.register(r'modellist', ModelListViewSet)
但是,当我运行localhost Web服务器时,DRF前端显示如下:
"models": "http://localhost:8000/datamaker/api/modellist/",
"modellist": "http://localhost:8000/datamaker/api/modellist/",
我该怎么阻止这一切?
我需要模型转到模型,需要模型列表转到模型列表
非常感谢…使用参数:
router.register(r'models', ModelViewSet, base_name='models')
router.register(r'modellist', ModelListViewSet, base_name='modellist')
由于序列化程序共享相同的数据模型,DRF可能无法自动发现url命名模式。因此,在这种情况下,最好显式设置base\u name
如果您使用的是较新版本的Django Rest框架,则需要使用
basename='models'
而不是base\u name='model'
确定。DRF仍然感到困惑。URL很好,但它们都运行到models API。我还缺什么?谢谢。你重启服务器了吗?现在应该可以了。DRF仍然感到困惑。现在,两个链接都很好,但是当您单击链接时,它们会转到同一个API。可能您的SchemaSerializer
不起作用,所以两个序列化程序的输出都是相同的?是的。它们单独工作,但如果我加上两者,DRF会变得疯狂。这里的选项是是否获取带有输出的子对象。在某些情况下,我不想把整个事情都和孩子们放在一起,所以我只想要一份模特的名册。在其他情况下,我想要一个有所有孩子、孙子等的模型。。。。