我有这样的代码(Django 1.4.3):
class Peon(models.Model)
# ...
order = models.ForeignKey(Order, db_column='idOrder')
# ...
def save(self, *args, **kwargs):
if self.order_id is None:
self.order = Order()
#edit self.order's fields appropriately
self.order.generate(...)
self.order.save()
super(Peon, self).save(*args, **kwargs)
super().save() 抱怨订单不存在。
换句话说,即使设置了 self.order.pk,self.order_id 仍然为 None,这使我无法保存 self。
我的解决方法是在调用 super().save() 之前执行此操作:
self.order_id = self.order.pk
我的问题是,为什么这是必要的?感觉 self.order.save() 应该自动更新外键,但一定有充分的理由不这样做。