我有一个具有自我关系和通过模型的多域多域模型。我想要一个序列化器来给出through模型的字段。但却找不到任何运气。
class CarSerializer(serializers.ModelSerializer):
relations = CarRelationSerializer(source='carrelation_set', many=True, read_only=True, allow_null=True)
class Meta:
model = Car
fields = ("id", "color", "relations")
class CarRelationSerializer(serializers.ModelSerializer):
class Meta:
model = CarRelation
fields = "__all__"
这些模型是:
class Car(models.Model):
color = model.CharField()
relations = models.ManyToManyField("self", through="CarRelation")
class CarRelation(models.Model):
source = model.CharField()
target = model.CharField()
但是在序列化的数据中,我没有得到源和目标。有什么帮助吗?
我不明白CarRelation
的意义。如果只考虑Car
,则可以按如下方式序列化它:
class SimpleCarSerializer(serializers.ModelSerializer):
class Meta:
model = Car
fields = ("id", "color")
class CarSerializer(serializers.ModelSerializer):
relations = SimpleCarSerializer(many=True)
class Meta:
model = Car
fields = ("id", "color", "relations")
这里我们需要另一个简单的汽车序列化器,以避免关系无限循环。每辆车将只显示相关的卡。