gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:10:21 26 4
gpt4 key购买 nike

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

我有两个相关模型:CarDriver。我想连接汽车对象和驾驶员对象的彼此实例。这两个对象似乎(*)已经创建。

在这两种情况下:

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

(*) - 老实说,我不确定这些对象是否已完全创建。一切都在 View 中进行,两个对象都已经拥有自己的 id,但是对数据库的手动查询显示,这些对象尚不存在。交易未完成?

最佳答案

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

self.garage.car is self.garage.car

如果上述为 False,唯一的解释是 car 是一个属性,每次调用此属性时都会获得对象的新实例。

关于python - 当通过子属性引用它们时,Django ORM 不会保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com