You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中Flight与Passenger多对多中间表生成多余条目问题

问题成因

该问题由多对多字段错误配置symmetrical=True参数导致:

  • symmetrical是Django专为自引用多对多关联设计的参数,典型适用场景为用户模型的好友关系,作用是实现A关联B时自动创建B关联A的对称记录。
  • Flight与Passenger属于两个完全独立的非自引用模型,配置symmetrical=True会导致Django关联逻辑异常,执行关联操作时生成不符合预期的无效条目。
解决方法

移除Flight模型中passengers字段的symmetrical=True配置即可,非自引用多对多关联无需设置该参数。修正后的模型定义如下:

class Passenger(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()


class Flight(models.Model):
    time = models.DateTimeField('flight time')
    destination = models.CharField(max_length=20)
    passengers = models.ManyToManyField(
        to=Passenger,
        related_name='flights',
        blank=True,
    )

配置修改完成后,依次执行python manage.py makemigrations和python manage.py migrate命令同步数据库结构,后续执行关联操作就只会生成符合预期的关联记录,不会再出现无效多余条目。

内容的提问来源于stack exchange,提问作者Binyamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:39:03