У меня есть следующие таблицы MySQL:
-Сделать
-модели
-stylesСоздание API с использованием Django-Rest-Framework с объединения таблиц
models.py (автогенерируемая)
class Makes(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=13)
nicename = models.CharField(db_column='niceName', max_length=13)
class Meta:
managed = False
db_table = 'Makes'
class Models(models.Model):
id = models.CharField(primary_key=True, max_length=36)
name = models.CharField(max_length=23)
nicename = models.CharField(db_column='niceName', max_length=23)
make = models.ForeignKey(Makes, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'Models'
serializers.py
class MakeSerializer(serializers.ModelSerializer):
class Meta:
model = Makes
fields = ('name',)
class ModelSerializer(serializers.ModelSerializer):
make = MakeSerializer(many=True, read_only=True)
class Meta:
model = Models
fields = ('make','id', 'name', 'nicename')
views.py
class MakesList(generics.ListCreateAPIView):
queryset = Makes.objects.all()
serializer_class = MakeSerializer
class MakesDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Makes.objects.all()
serializer_class = MakeSerializer
Другими словами, Styles - это родительская таблица, содержащая идентификатор Make и Model, который соединяет эти два.
Как я могу идти о том, чтобы отношения с ФПИ, чтобы дать мне ожидаемый результат:
"makes": [{
"id": 1,
"name": "Acura",
"models": [{
"id": "Acura_ILX",
"name": "ILX",
"styles": [{
"id": "1"
"name": "Sport"
}]
}, {
"id": "Acura_ILX_Hybrid",
"name": "ILX Hybrid",
"styles": [{
"id": "1"
"name": "Sport"
}]
}, {
"id": "Acura_MDX",
"name": "MDX",
"styles": [{
"id": "1"
"name": "Sport"
}]
}]
Это просто пример. Если у вас есть данные, просто создайте эти сериализаторы. Загрузите один объект, который вас интересует, и передайте его в сериализатор как пример – sebb
это хорошо? это то, что вы ожидали? – sebb
Я только что редактировал свой пост, чтобы вы могли видеть мои настройки. – Moshe