Как Django Rest Framework сериализует мультиобъект без использования внешнего ключа SQL - PullRequest
0 голосов
/ 02 января 2019

принимая во внимание производительность сервера sql, я проектирую sql без использования внешнего ключа, вместо этого я использую ссылку id для объединения двух таблиц.но когда я использую сериализацию Django Rest Framework для сериализации нескольких таблиц, она поддерживает только внешний ключ (это правильно?).

Другое решение заключается в использовании сопоставления представлений mysql с моделью django, которая может представлять несколько соединений.Таблица.В этом случае мне нужно разделить метод GET и POST на два отдельных APIView, а не generics.ListCreateAPIView в целом (GET для модели представления mysql. POST для модели не-myql-представления), но в остальных случаях они одинаковыURI.

GET /school     -- mapping to mysql view for more information
POST /school    -- just create a new host

Код:

class LocationSerializer(model.Model):
    pass

class SchoolSerializer(models.Model):
    pass

class LocationSerializer(serializers.ModelSerializer):
    class Meta:
        model = LocationModel
        fields = ("region", "state", "country")

class SchoolSerializer(serializers.ModelSerializer):
    location = LocationSerializer()
    class Meta:
        model = SchoolModel
        fields = ("name", "level", "location")

class SchoolList(generics.ListCreateAPIView):
    queryset = SchoolModel.objects.all()
    serializer_class = SchoolSerializer

class SchoolDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = SchoolModel.objects.all()
    serializer_class = SchoolSerializer 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...