我拉着我的頭髮試圖解決這個(希望)簡單的問題。正確訪問Django-Nonrel中的OneToOneField關係中的派生類
我正在使用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不支持多表繼承。 )
這當然*看起來像我感興趣的任何想法,這是否可以在Django nonrel? – NT3RP
我還沒有嘗試過,但我會想象它可以與djanog-nonrel一起工作,這只是NoSQL的實現,這應該與NoSQL支持無關。 – Furbeenator
該解決方案並不完全適用於當前情況。在涉及關係時,多態模型似乎沒有做任何特別的事情。另外,如果我將基類設置爲PolymorphicMetaClass,當我嘗試向下轉換時,會出現錯誤:'非關係數據庫不支持多表繼承。 – NT3RP