![](/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.