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
ここで、accounttypeに値を追加したいのですが、持っているのはアカウントオブジェクト、たとえば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…”)
多分それはこの時点で製図板の問題です!:)
私の例で明確になっていることを願っています。ありがとう