この (願わくは) 単純な問題を解決しようと、私は頭を悩ませています。
私は Django-nonrel を使用しており、いくつかのモデルをセットアップしようとしています。以下のコードを簡略化しました。
class Application(models.Model)
name = "Application"
def get_name(self):
print(self.name)
class ExampleApp(Application)
name = "Example Application"
class Site(models.Model)
app = models.OneToOneField(Application, null=True)
id = models.CharField(max_length=1)
# other details not important
のインスタンスを取得するときにSite
、派生クラスのインスタンスを取得したい (例: ExampleApp
)
class MyView(View):
def get(self, request, *args, **kwargs):
# Presuppose that I have an object with id="a"
site = Site.objects.filter(id="a")
#<Application: Application>
app = site.app
#returns "Application", not "Example Application"
app.get_name()
派生クラスにアクセスするにはどうすればよいですか?
(理想的には、私はApplication
抽象基底クラスになりたいのですが、django は抽象基底クラスへの関係を許可しません。フィールドを内部Application
で定義しますが、django-nonrel は複数テーブルの継承をサポートしていません。)