Python Django Rest框架未从数据库检索数据

Python Django Rest框架未从数据库检索数据,python,django,mongodb,django-rest-framework,django-views,Python,Django,Mongodb,Django Rest Framework,Django Views,我正在创建一个API端点来从Mongo数据库检索数据,以便在前端使用它 在我的项目中,我使用两个数据库:sqlite数据库和Mongo数据库 在Mongo数据库中,有一个名为tst的集合,其中包含一些数据。我创建了端点,但在我的浏览器上打开api后,我没有看到从集合中检索到的json数据,好像它找不到正确的位置 有人能帮我找出我做错了什么吗 这是我的模型: class tst(models.Model): id = models.CharField(max_length=100)

我正在创建一个API端点来从Mongo数据库检索数据,以便在前端使用它

在我的项目中,我使用两个数据库:sqlite数据库和Mongo数据库

在Mongo数据库中,有一个名为
tst
的集合,其中包含一些数据。我创建了端点,但在我的浏览器上打开api后,我没有看到从集合中检索到的json数据,好像它找不到正确的位置

有人能帮我找出我做错了什么吗

这是我的模型:

class tst(models.Model):
    id = models.CharField(max_length=100)
    ticker = models.FloatField()

    def save(self, *args, using=None, **kwargs):
        super(tst, self).save(*args, using='dbtwo', **kwargs)
以下是我的看法:

class tstList(generics.ListCreateAPIView):
    queryset = tst.objects.using('dbtwo').all()
    serializer_class = tstSerializer
以下是序列化程序:

class tstSerializer(serializers.ModelSerializer):

    class Meta:
        model = tst
        fields = ('id', 'ticker', )
以及网址:

path('tst/', views.tstList.as_view()),

所以我像你一样设置了2个数据库,稍微更改了代码,向数据库添加了2个
tst
对象,并在API调用中检索了这2个
tst
对象的JSON数据

我通过在
id
字段中添加
primary\u key=True
略微更改了
models.py

# models.py

class tst(models.Model):
    id = models.CharField(primary_key=True, max_length=100)
    ticker = models.FloatField()

    def save(self, *args, using=None, **kwargs):
        super(tst, self).save(*args, using='dbtwo', **kwargs)
我更改了
views.py
,因此它使用了如下的

# views.py

from rest_framework import viewsets

class tstList(viewsets.ModelViewSet):
    queryset = tst.objects.using('dbtwo').all()
    serializer_class = tstSerializer
# serializers.py

class tstSerializer(serializers.ModelSerializer):

    class Meta:
        model = tst
        fields = ('id', 'ticker',)
# urls.py

from rest_framework import routers
# imported tstList view here

router = routers.DefaultRouter()

router.register(r'test', views.tstList, base_name='test')
我没有对序列化程序进行任何更改,因此我的序列化程序如下所示:

# views.py

from rest_framework import viewsets

class tstList(viewsets.ModelViewSet):
    queryset = tst.objects.using('dbtwo').all()
    serializer_class = tstSerializer
# serializers.py

class tstSerializer(serializers.ModelSerializer):

    class Meta:
        model = tst
        fields = ('id', 'ticker',)
# urls.py

from rest_framework import routers
# imported tstList view here

router = routers.DefaultRouter()

router.register(r'test', views.tstList, base_name='test')
最后,在
urls.py
中,我使用了,并将
tstList
视图注册为如下端点:

# views.py

from rest_framework import viewsets

class tstList(viewsets.ModelViewSet):
    queryset = tst.objects.using('dbtwo').all()
    serializer_class = tstSerializer
# serializers.py

class tstSerializer(serializers.ModelSerializer):

    class Meta:
        model = tst
        fields = ('id', 'ticker',)
# urls.py

from rest_framework import routers
# imported tstList view here

router = routers.DefaultRouter()

router.register(r'test', views.tstList, base_name='test')
然后,我在终端中运行了以下命令:

  • manage.py makemigrations
  • manage.py迁移--数据库dbtwo
  • manage.py runserver
然后,我创建了两个
tst
对象,它们的
ticker
字段具有随机浮点值

获取请求和结果 当我现在向
发出GET请求时http://127.0.0.1:8000/test/
我得到以下结果:

[
    {
        "id": "1",
        "ticker": 1.2
    },
    {
        "id": "2",
        "ticker": 1.7
    }
]

作为第一步,您可以在
tstList
中覆盖
get\u queryset
,打印查询集并查看它是否包含任何数据:
print(self.queryset)
这听起来可能很愚蠢,但是您是否检查过
tst
数据库中是否确实存在任何
tst
对象?我正在更正错误,谢谢!