Использование Sql и MongoDb с Django остальные рамки для API

Я новичок в 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' нет атрибута 'Инструмент'

Ранее я использовал класс ListAPIView из rest_framework.generics для создания API для доступа к данным из sql. Является ли ошибка, потому что я использовал ModelViewSet для ToolApi?

PS - Пожалуйста, направьте меня в какой-нибудь git-проект с использованием mongodb и sql

1 ответ

Извините за поздний ответ, Шубхам.

Я думаю, проблема в том, что вы не должны использовать {'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.