与 Django 的多对多关系,Python

Many to many relationship with Django, Python

目前我正在开发一个应用程序来管理用 Django 编写的汽车和事件的驱动程序,Python。

我有两个模型:

class Vehicle(models.Model):
    name            = models.CharField(max_length=100)
    max_capacity    = models.IntegerField(default=2)
    available       = models.BooleanField()

class Event(models.Model):
    start_timestamp = models.DateTimeField()
    end_timestamp   = models.DateTimeField()
    description     = models.TextField()
    location        = LatLonField()

我保存了 10 种不同的车辆。
有 18 个不同的事件。

现在我想为一个事件添加多个车辆而不为每个事件生成新车辆,并指定将在该事件中使用这辆车的人数,例如:

Event 0815:
    - FirstCar,  loaded with 5/13 People
    - SecondCar, loaded with 2/2 People

(汽车的最大容量在其型号中给出)

这与djangos数据库概念的结构怎么可能?

您可以创建一个 intermediate table 并使用 ManyToMany 字段的 through 参数:

class Event(models.Model):
    ...
    vehicles = models.ManyToManyField(Vehicle, through='EventVehicle')

class EventVehicle(models.Model):
    event = models.ForeignKey(Event)
    vehicle = models.ForeignKey(Vehicle)
    loaded = models.IntegerField(default=2)