当通过子属性引用它们时,Django ORM不会保存值

2024-05-13 20:13:53 发布

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

今天我发现了一些非常棘手的事情。我使用django1.7.7(如果这很重要的话)

我有两个相关的模型:CarDriver。我想把car对象和driver对象的实例连接起来。两个对象似乎都已创建(*

在这两种情况下:

car = Car.objects.create()
car.save()
driver = Driver.objects.create()
driver.save()

self.garage.car = car
self.garage.save()

接下来:

# doesn't work
self.garage.car.driver = driver
self.garage.car.save()
# self.object.car.driver is None

但是:

# works
car = self.garage.car
car.driver = driver
car.save()
# self.object.car.driver is driver

*)-老实说,我不确定这些对象是否已完全创建。一切都在视图中进行,两个对象都已经拥有了id,但是手动查询数据库显示,这些对象还没有出现。交易未完成


Tags: 对象模型selfobjectsobjectissavedriver
1条回答
网友
1楼 · 发布于 2024-05-13 20:13:53

因为在您的示例代码中,first self.object.car与您在下面一行中保存的对象不同。看看这个:

self.garage.car is self.garage.car

如果上面是假的,唯一的解释就是car是一个属性,每次调用这个属性时都会得到一个新的object实例

相关问题 更多 >