我有一个Django模型,看起来像这样的工作:我可以创建一个OneToOneField,它将创建一个对象,如果它不存在?
class Subscription(models.Model):
user = models.OneToOneField(User)
也就是说,它具有与Django的auth
模块User
类一到一对一的关联。这种关联不是可选的;然而,由于一些遗留代码,并与数据库中的一些手工修补,也有其中一个用户做不案件具有相关联的订阅,这意味着像这样的代码:
sub = user.subscription
将抛出一个DoesNotExist
异常。但是,大部分代码库假定每个用户都有一个关联的对象。
有没有一种方法,我可以继承OneToOneField
这样,如果相关Subscription
对象不存在于数据库中,我将创建一个并返回时user.subscription
被调用它,而不是抛出异常?
这种情况多发生于传统(现有的)'用户',所以'post_save'信号在引用相关的'subscription'对象之前不一定被触发。 – mipadi 2012-03-30 22:34:02
单个查询可以处理所有旧用户。 – 2012-03-30 22:43:26