【发布时间】:2017-06-12 12:41:59
【问题描述】:
我有以下 MySQL 表:
-制作
-型号
-风格
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'
序列化器.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 的 ID。
我如何与 DRF 建立关系以获得预期的输出:
"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"
}]
}]
【问题讨论】:
标签: mysql json django api django-rest-framework