私はこれらのモデルを持っています:
class Base(models.Model):
# ... attributes
def f(self):
raise Exception()
class A(Base):
attribute = models.IntegerField()
class B(A):
class Meta:
proxy = True
def f(self):
print "B", attribute
class C(A):
class Meta:
proxy = True
def f(self):
print "C", attribute
今、私は彼らと少し遊んでいますが、問題が見つかりました:
c = C()
c.attribute = 1
c.save()
b = Base.objects.all()
b.f() # Aspected "C 1" to be printed, exception fired instead!
最後の行は予期しない方法で機能します。ドキュメントをよく見て、Djangoの自動ダウンキャスト属性を検索しましたが、A()
いずれも自動キャストされていないクラスの1つだけが見つかりましたB()
or C()
.
データを保存するときにも継承を保存する方法はありますか? ありがとう!