who*_*rth 4 django django-rest-framework
我有一个视图,该视图用于GET和POST到不是默认数据库的数据库。
class DeployResourceFilterView(generics.ListAPIView):
serializer_class = ResourceSerializer
def get(self, request, format=None):
resname = self.request.GET.get('name')
queryset = Resmst.objects.db_manager('Admiral').filter(resmst_name=resname)
serializer = ResourceSerializer(queryset)
if queryset:
return Response(serializer.data)
else:
raise Http404
def post(self, request, format=None):
serializer = ResourceSerializer(data=request.DATA, many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
GET可以正常工作,但在POST上,它总是会抱怨表不存在而不断失败。我的假设是这样做的原因是因为它试图使用默认数据库,而不是我定义为辅助数据库的“海军上将”数据库。如何分配POST以使用特定数据库而不是默认数据库?
请参阅以下指向文档的链接:https : //docs.djangoproject.com/en/1.7/topics/db/multi-db/#selecting-a-database-for-save
您可以指定要保存到的数据库,只需将其作为参数传递即可:
my_object.save(using='database-name')
Run Code Online (Sandbox Code Playgroud)
您的情况是:
serializer.save(using='Admiral')
Run Code Online (Sandbox Code Playgroud)
您还应该queryset像这样使用它:
queryset = Resmst.objects.using('Admiral').filter(resmst_name=resname)
Run Code Online (Sandbox Code Playgroud)
由于它是一个查询集而不是一个需要db_manager创建对象的命令。
| 归档时间: |
|
| 查看次数: |
3067 次 |
| 最近记录: |