我正在创建一个API端点以从Mongo数据库中检索数据,以便在前端使用它。
在我的项目中,我正在使用两个数据库:sqlite数据库和Mongo数据库。
在Mongo数据库中,有一个名为-std=gnu++17
的集合,其中包含一些数据。我创建了终结点,但是在浏览器上打开api之后,我没有看到从集合中检索到的json数据,好像它不在正确的位置。
有人可以帮我发现我在做什么错吗?
这是我的模特:
tst
这是我的观点:
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', )
答案 0 :(得分:2)
因此,我像您一样设置了2个数据库,做了一些更改,在数据库中添加了2个tst
对象,并在我的API调用中检索了这2个tst
对象的JSON数据。
我通过在models.py
字段中添加primary_key=True
来稍微更改了id
。
# 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
,使其使用了ModelViewSet
,如下所示:
# 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
中,我使用了DefaultRouter()
并将tstList
视图注册为这样的端点:
# 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 migrate --database dbtwo
manage.py runserver
然后,我为两个tst
字段创建了两个具有随机浮点值的ticker
对象。
现在我向http://127.0.0.1:8000/test/
发出GET请求时,得到以下结果:
[
{
"id": "1",
"ticker": 1.2
},
{
"id": "2",
"ticker": 1.7
}
]