Скажем, у меня есть две модели, Автомобиль и Человек:
class Car(db.Model):
...
class Person(db.Model):
car_id = db.Column(db.Integer, db.ForeignKey('car.id'))
car = db.relationship("Person", backref='passengers')
Отношения Person -> Car
являются отношениями "многие к одному", потому что в машине может быть несколько человек. Я хочу добавить водителя в машину. Драйвер также Person
, но в отношениях один к одному.
class Car(db.Model):
driver_id = db.Column(db.Integer, db.ForeignKey('person.id'))
driver = db.relationship("Car", backref=backref('person', uselist=False)
Если бы я сделал это таким образом, я получил бы ошибку, что Person.car
уже существует.
Мне нужно следующее поведение:
- Когда установлено
Car.driver
, для Person.car
должно быть установлено значение Car
(автоматически или вручную). - Когда установлено
Person.car
, с Car
ничего не должно произойти, поскольку Car
не знает, является ли Person
driver
или passenger
. Car.passengers
не содержит driver
. Person
должен иметь только один внешний ключ для Car
Я пробовал различные комбинации backref
и back_populates
, включая не используя ни Я думаю, что это сработало бы, если бы я мог указать passengers
массив внешних ключей для объекта Car
, но я не думаю, что это возможно.
Есть ли способ определить эти отношения?