我有一个抽象的Page
模型,它为一种页面类型定义了公共字段,然后我对该子类进行子类化以限制允许的子页面类型。我希望该抽象模型的所有子类默认使用抽象模型中定义的template
,但似乎没有。
class BaseListing(Page):
empty_message = RichTextField()
intro = RichTextField()
template = 'listing.html'
class Meta:
abstract = True
class BlogListing(BaseListing):
subpage_types = ['BlogPost']
我希望默认使用BaseListing
模型中定义的模板,但除非我在{{1}上专门设置blog_listing.html
,否则它将寻找template
模板}像这样的模型:
BlogListing
答案 0 :(得分:3)
在抽象页面模型上定义a get_template
method。通常,get_template
的默认实现将简单地返回self.template
(这反过来默认为从类名派生的文件名,给出您当前看到的行为)。
get_template
的最常见用法是根据每个请求更改模板(例如,为经过身份验证的用户提供不同的模板);但是,如果将其定义为返回固定的模板名称,则它将覆盖每个子类获得自己的模板的标准行为。