![](/img/trans.png)
[英]Is it possible to access the variable from a method of a superclass in a subclass?
[英]Access Django SubClass Method from SuperClass
好的,所以我有兩個 Django 模型:
class Ticket(BaseModel):
name = models.CharField(max_length=200)
description = models.TextField(blank=True, null=True)
def get_absolute_url(self):
return '/core/group/ticket/{0}/'.format(self.id)
class ProjectTicket(Ticket):
project = models.ForeignKey('Project', on_delete=models.DO_NOTHING)
phase = models.ForeignKey('ProjectPhase', blank=True, null=True, on_delete=models.DO_NOTHING)
def get_absolute_url(self):
return '/different/url/structure'
現在,我正在使用 Ticket.objects.all() 查詢所有 Ticket 對象。 這將返回所有 Ticket 對象,包括一些 ProjectTicket 子類。
當有問題的對象是實際的子類 ProjecTicket 對象時,我希望能夠做的是訪問子類 get_absolute_url() 。
我知道我可以從子類中獲取父類,但我希望能夠反過來。
有沒有人取得過這樣的成績? 如果是這樣,你采取了什么方法?
這是我現在能想到的一種方法:
我確定您知道繼承 django 模型會創建與父級的 OneToOne 關系。 因此,同樣是ProjectTicket
類實例的Ticket
對象將具有一個名為projectticket
的屬性。 您可以檢查此值並相應地返回 url:
class Ticket(...):
...
def get_absolute_url(self):
if hasattr(self, 'projectticket'):
return self.projectticket.get_absolute_url()
else:
return '/core/group/ticket/{0}/'.format(self.id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.