我希望模型继承自超类,因为超类(" Step")为子类提供基本功能(" InfoStep"等)。
但是,当我查询" Step"时,InfoStep被实例化为Step,因此不会在子类中调用正确的方法。从Route.json()调用Step.json()而不是对InfoStep.json()的所需调用
显然,我更希望不必明确查询每个子类。下面的最小代码示例:
class Route(models.Model):
def json(self):
postResult = []
for needle in self.posts.all():
json = needle.json()
json['steps'] = [x.json() for x in Step.objects.filter(post=needle, route=self)]
postResult.append(json)
return postResult
class Step(models.Model):
def json(self):
return {'id' : self.id,
'name' : self.name,
'description' : self.description}
class InfoStep(Step):
def json(self):
base = super(InfoStep, self).json()
base[0]['url'] = self.url
return base
答案 0 :(得分:0)
解决方案是使用django插件。有几个这样的插件存在,我最终使用了django-polymorphic