принимая во внимание производительность сервера 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