2014-09-05 16 views
1

У меня есть представление, которое я использую для GET и POST для базы данных, которая НЕ является базой по умолчанию.django rest framework несколько баз данных

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) 

ГЭТ отлично работает, но на POST он постоянно терпит неудачу жалуется, что таблица не существует. Мое предположение заключается в том, что причиной этого является то, что он пытается использовать базу данных по умолчанию, а не «адмирал», которую я определил как свою вторичную базу данных. Как назначить POST для использования конкретной базы данных, а не по умолчанию?

ответ

2

Смотрите эту ссылку на документы: https://docs.djangoproject.com/en/1.7/topics/db/multi-db/#selecting-a-database-for-save

Вы можете указать базу данных, которую хотите сохранить, просто передать его в качестве параметра:

my_object.save(using='database-name') 

В вашем случае это будет:

serializer.save(using='Admiral') 

Вы должны также использовать его в queryset так:

queryset = Resmst.objects.using('Admiral').filter(resmst_name=resname) 

Поскольку это запрос, а не команда, которая нуждается в db_manager в качестве объектов создания.

+0

Благодарим за это, но, похоже, он по-прежнему вынуждает башку по умолчанию не знать почему. – whoisearth

+0

Я решил проблему с Django-Database-Routers. [Django - Использование маршрутизаторов] (https://docs.djangoproject.com/en/1.11/topics/db/multi-db/#using-routers) – michaell

Смежные вопросы