我在 django 中遇到多表继承问题。
让我们以银行账户为例。
class account(models.Model):
name = models……
class accounttypeA(account):
balance = models.float…..
def addToBalance(self, value):
self.balance += value
class accounttypeB(account):
balance = models.int…. # NOTE this
def addToBalance(self, value):
value = do_some_thing_with_value(value) # NOTE this
self.balance += value
现在,我想为帐户类型添加一个值,但我只有一个帐户对象,例如 acc=account.object.get(pk=29) 。那么,谁是 acc 的孩子?
Django 自动在 accounttypeA 和 accounttypeB 中创建一个 account_ptr_id 字段。所以,我的解决方案是:
child_class_list = ['accounttypeA', 'accounttypeB']
for cl in child_class_list:
try:
exec(“child = ” + str(cl) + “.objects.select_for_update().get(account_ptr_id=” + str(acc.id) + “)”)
logger.debug(“Child found and ready to use.”)
return child
except ObjectDoesNotExist:
logger.debug(“Object does not exist, moving on…”)
也许这是一个绘图板问题!:)
我希望我在我的例子中已经很清楚了。谢谢