Django 使用自定义多对多映射序列化模型

2024-04-20 11:37:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三种型号:

class DistinctAlert(models.Model):
    entities = models.ManyToManyField(to='Entity', db_index=True, through='EntityToAlertMap')

class Entity(models.Model):
    entity_instance = models.ManyToManyField(EntityInstance)

class EntityToAlertMap(models.Model):
    entity = models.ForeignKey(Entity, on_delete=models.CASCADE)
    distinct_alert = models.ForeignKey(DistinctAlert, on_delete=models.CASCADE)
    entity_alert_relationship_label = models.ForeignKey(EntityAlertRelationshipLabel, on_delete=models.CASCADE,
                                                        null=True)

忽略DistinctAlertEntity的额外字段,我的序列化程序如下所示:

^{pr2}$

我的问题是,我的api只返回实体,它漏掉了entity_alert_relationship字段,这是我用来将实体映射到manytomy字段中不同警报的entity_alert_relationship字段的一部分。我的问题是,如何在维护实体/关系字段的同时序列化DistinctAlert


Tags: 实体truemodelonmodelsalertdeleteclass
1条回答
网友
1楼 · 发布于 2024-04-20 11:37:03

您可以为EntityToAlertMap编写序列化程序

class EntityToAlertMap(serializers.ModelSerializer):
    class Meta:
        model = EntityToAlertMap
        fields = ('entity', 'distinct_alert', 'entity_alert_relationship_label')

然后通过相关管理器检索所有相关的EntityToAlertMap实例

^{pr2}$

相关问题 更多 >