我刚开始使用基于通用类的 View 并且喜欢它。我确实有一个我仍然无法解决的问题。
我有一个名为 group 的抽象类,还有两个 child 的 Company 和 Bond。 (我简化了我的例子)。这是我的模型.py:
模型.py
class Group(BaseModel):
name = models.CharField(max_length=30, unique=True)
class Meta:
abstract = True
class Company(Group):
def __str__(self):
return "Company " + self.name
class Bond(Group):
def __str__(self):
return "Bond " + self.name
现在,当使用基于通用类的详细 View 显示我的对象之一时,我想要一个 group_detail.html 模板,并调用 group.name。但是,这不起作用,我需要调用 company.name 或 bond.name,具体取决于对象类型。由于我的原始模型具有更多属性,因此这是不可取的,因为它会导致大量重复代码。你们知道解决方法吗?
最佳答案
Group
在数据库中没有实例,因为它是一个抽象类,因此您无法查询它。您必须查询 Company
或 Bond
,因此将 Company
或 Bond
对象传递给模板。
如果您的 Company
和 Bond
模型具有相同的属性,您可以将它们的对象传递给具有单个上下文名称的模板,这样您就可以使用同一个模板。但是,实际上,我认为你的 Company
和 Bond
模型是不同的,所以你不能为它们创建一个模板,它们会不同,所以没有代码重复完全没有。
关于python - 在 Django 中使用基于泛型类的 DetailView 模板中的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108541/