Python Django Rest框架未从数据库检索数据
我正在创建一个API端点来从Mongo数据库检索数据,以便在前端使用它 在我的项目中,我使用两个数据库:sqlite数据库和Mongo数据库 在Mongo数据库中,有一个名为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)
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
对象?我正在更正错误,谢谢!