我正在使用看起来像这样的Django模型:
class Subscription(models.Model):
user = models.OneToOneField(User)
也就是说,它与Django的User
模块中的auth
类具有一对一的关联。这种关联不是可选的;但是,由于一些遗留代码和一些手动修补数据库,有些情况下用户不有相关的订阅,这意味着代码如下:
sub = user.subscription
会抛出DoesNotExist
个异常。但是,大部分代码库都假定每个用户都有一个关联的Subscription
对象。
有没有办法可以将OneToOneField
子类化,如果数据库中不存在关联的Subscription
对象,我将创建一个并在调用user.subscription
时返回它,而不是抛出异常?
答案 0 :(得分:1)
执行此操作的正确方法是捕获post_save
信号,并在必要时创建对象。
答案 1 :(得分:0)
添加名为subscription
的属性并在getter
中创建必要的引用,因为您可能需要进行猴子修补,更好的选择