Python Django ORM不';按子属性引用时不保存值

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

今天我发现了一件非常棘手的事情。我使用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 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 sey
garage
@丹尼尔:代码在CreateView.form_validw中,这是什么?它在Django 1.7中是新的吗?
self.garage.car is self.garage.car