Witam, otóż już nie mogę dojść w czym jest problem.
Mam taki kod:
serializers.py
from rest_framework import serializers
from .models import Custom_ChatColors
class JBCCCSerializer(serializers.ModelSerializer):
class Meta:
model = Custom_ChatColors
fields = '__all__'
def create(self, validated_data):
return Custom_ChatColors.objects.db_manager('jb_db').create(**validated_data)
views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django.http import Http404
from jailbreak.models import Custom_ChatColors
from .serializers import JBCCCSerializer
class JBCCCList(APIView):
def get(self, request, format=None):
ccc = Custom_ChatColors.objects.db_manager('jb_db').all()
serializer = JBCCCSerializer(ccc, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = JBCCCSerializer(data=request.data)
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)
i gdy próbuje dodać nowy wpis to wywala błąd, że nie ma tabeli w domyślnej bazie danych a ja chciałbym, żeby pobierało ja z bazy o nazwe 'jb_db'.
router.py
class JailBreakRouter:
def db_for_read(self, model, **hints):
if model._meta.app_label == 'jailbreak':
return 'jb_db'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'jailbreak':
return 'jb_db'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj._meta.app_label == 'jailbreak' or \ obj2._meta.app_label == 'jailbreak':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'jailbreak':
return db == 'jb_db'
return None
I settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'portal',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost'
},
'jb_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jailbreak',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost'
}
}
DATABASES_ROUTERS = ['jailbreak.router.JailBreakRouter',]