Python Django ORM不';按子属性引用时不保存值
今天我发现了一件非常棘手的事情。我使用django 1.7.7(如果这很重要的话) 我有两种相关型号:Python Django ORM不';按子属性引用时不保存值,python,django,django-orm,django-1.7,Python,Django,Django Orm,Django 1.7,今天我发现了一件非常棘手的事情。我使用django 1.7.7(如果这很重要的话) 我有两种相关型号:汽车和驾驶员。我想连接car对象和driver对象的其他实例。这两个对象似乎都已创建(*) 在这两种情况下: car = Car.objects.create() car.save() driver = Driver.objects.create() driver.save() self.garage.car = car self.garage.save() 接下来: # doesn't w
汽车
和驾驶员
。我想连接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
但是:
(*)-老实说,我不确定这些对象是否已完全创建。视图中的一切都在进行中,两个对象都已经拥有自己的
id
s,但手动查询数据库显示,这些对象还不存在。事务未完成?因为在示例代码中,first self.object.car与您保存在下一行中的对象不同。看看这个:
self.garage.car is self.garage.car
如果上面的解释是错误的,那么唯一的解释就是car是一个属性,每次调用该属性时,您都会得到对象的新实例。这个代码到底在哪里?在您的示例中,什么是
self
,什么是object
?我希望API类似于car=car();car.driver=driver(…)
@IanAuld:我认为这并不重要self
是视图的一个实例,object是模型的另一个实例,lets seygarage
@丹尼尔:代码在CreateView.form_validw中,这是什么?它在Django 1.7中是新的吗?
self.garage.car is self.garage.car