需要有关嵌套 Django Rest 框架的帮助



我第一次在DRF上工作,但被困在一个地方。这只是与我面临的问题相关的一个假设示例:

models.py

class Manufacturer(models.Model):
manufacturer_id = models.CharField(max_length=25, primary_key=True)
manufacturer_name = models.CharField(max_length=25)
class Car(models.Model):
manufacturer = models.ForeignKey(
Manufacturer, related_name='manufacturerCars', on_delete=models.CASCADE)
car_id = models.CharField(max_length=25, primary_key=True)
car_name = models.CharField(max_length=25)

Serializers.py

class ManufacturerSerializer(serializers.ModelSerializer):
class Meta:
model = Manufacturer
fields = ("manufacturer_id", "manufacturer_name", "manufacturerCars",)

class CarSerializer(serializers.ModelSerializer):
manufacturer = ManufacturerSerializer()
class Meta:
model = Car
fields = ("car_id", "manufacturer")

当我访问/api/cars/端点时,我会获得有关汽车的所有详细信息,包括其制造商:

car_details = [
{
"car_id": "1",
"car_name": "abc",        
"manufacturer": {
"manufacturer_id": "1",
"manufacturer_name": "XYZ",
"manufacturerCars": [
"1",
"7",
"3",
"5"
]
}
}

]

问题:

我应该采取什么方法在上面的输出中列出与当前汽车制造商 - 制造商汽车字段相关的所有汽车(即有关 ID 为 1、7、3、5 的汽车的详细信息(?我是否需要遍历从/api/cars 获得的所有数据?

非常感谢您的帮助!

您可以使用SerializerMethodField来实现此目的

您可以为汽车模型创建新的序列化程序。

class AnotherCarSerializer(serializer.ModelSerializer):
class Meta:
model = Car
fields = ("car_id",)
class ManufacturerSerializer(serializers.ModelSerializer):
manufacturerCars = AnotherCarSerializer(many=True)
class Meta:
model = Manufacturer
fields = ("manufacturer_id", "manufacturer_name", "manufacturerCars",)

class CarSerializer(serializers.ModelSerializer):
manufacturer = ManufacturerSerializer()
class Meta:
model = Car
fields = ("car_id", "manufacturer")

最新更新