0

我是 django 的新手,它默认使用 sql db,但也将它连接到 mongoldb。在我的 models.py 我

from mongoengine import Document, EmbeddedDocument, fields

class ToolInput(EmbeddedDocument):
    name = fields.StringField(required=True)
    value = fields.DynamicField(required=True)

class Tool(Document):
    label = fields.StringField(required=True)
    description = fields.StringField(required=True, null=True)
    inputs = fields.ListField(fields.EmbeddedDocumentField(ToolInput))

在我的 serializers.py 中,我有:-

from .models import Tool
from rest_framework_mongoengine import serializers as mongoSerializers
from .models import Tool

class ToolSerializer(mongoSerializers.DocumentSerializer):
    class Meta:
    model = Tool
    fields = '__all__'

在我的 api.py 中,我有:-

from .serializers import ListSerializer, CardSerializer, ToolSerializer
from rest_framework.generics import ListAPIView
from rest_framework_mongoengine import viewsets as mongoViewsets
from .models import List, Card, Tool

class ToolApi(mongoViewsets.ModelViewSet):
    #lookup_field = 'id'
    queryset = Tool.objects.all()
    serializer_class = ToolSerializer

在我的 urls.py 中,我有:-

from django.conf.urls import include, url
from .api importToolApi

urlpatterns = [
    url(r'Tool', ToolApi.as_view({'get': 'Tool'})),
]

当我点击这个 api 时,错误提示:- 'ToolApi' 对象没有属性 'Tool'

早些时候,我使用来自 rest_framework.generics 的 ListAPIView 类来创建 api 来访问来自 sql 的数据。是因为我为 ToolApi 使用了 ModelViewSet 导致的错误吗?

PS - 请让我参考一些同时使用 mongodb 和 sql 的 git 项目

4

1 回答 1

0

抱歉,Shubham 回复晚了。

我认为,问题是你不应该使用{'get': 'Tool'}

urlpatterns = [
    url(r'Tool', ToolApi.as_view({'get': 'Tool'})),
]

相反,你应该使用类似的东西:

urlpatterns = [
    url(r'Tool', ToolApi.as_view({'get': 'list'})),
]

或者

urlpatterns = [
    url(r'Tool', ToolApi.as_view({'get': 'retrieve'})),
]

至于示例回购,恐怕我不能提供比以下更好的东西了:https ://github.com/BurkovBA/django-rest-framework-mongoengine-example/stargazers 。

于 2018-02-21T17:05:04.473 回答