我的航班和乘客之間存在多對二的關系。當我嘗試將乘客分配給航班物件時,Django 似乎向中間表添加了一個額外的條目。
以下是模型:
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,
symmetrical=True,
related_name='flights',
blank=True,
)
說中間表是這樣的,有乘客

假設flight_object是一個 ID=1 的航班,passenger_object一個 ID=2 的乘客,當我運行flight_object.passengers.add(passenger_object)Django時,向資料庫中的中間表添加了 2 個條目。該表現在看起來像這樣:

ID=1 和 2 的兩個條目都應該存在,但 3 不正確,flight_id外鍵用于完全不同的航班!
uj5u.com熱心網友回復:
那是因為symmetrical=True. 您不應該ManyToMany與除self.
根據docs,在使用時symmetrical=True,Django 會嘗試在through表中插入對稱記錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328804.html
標籤:Python 姜戈 sqlite django-models
上一篇:根據資料庫可用性顯示方面
