另一种解决办法是将
item
class SimpleTransaction(models.Model):
# ...
item = models.ForeignKey('SimpleItem')
# ...
# ...
class SubscriptionTransaction(models.Model):
# ...
item = models.ForeignKey('SubscriptionItem')
# ...
但是这样就没有直接的方法(不使用条件运算符或类似的方法)来引用项目中的关联交易:
i.simpletransaction if i.simpletransaction else i.subscriptiontransaction
所以我认为这种方式是不可接受的。
但是,可以添加这些属性:
class SimpleTransaction(Transaction):
@property
def simple_item(self):
return self.item.simpleitem
class SubscriptionTransaction(Transaction):
@property
def subscription_item(self):
return self.item.subscriptionitem
我看没有别的办法解决这个问题。