通过模型序列化具有自关联的manymany字段



我有一个具有自我关系和通过模型的多域多域模型。我想要一个序列化器来给出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")

这里我们需要另一个简单的汽车序列化器,以避免关系无限循环。每辆车将只显示相关的卡。

最新更新