django의 확장 된 플랫 페이지에서 필드에 액세스하는 방법은 무엇입니까? 관리자에django의 확장 된 플랫 페이지의 필드에 대한 액세스
class ExtendedFlatPage(FlatPage):
teaser = CharField(max_length=150)
class ExtendedFlatPageForm(FlatpageForm):
teaser = CharField(max_length=150)
class Meta:
model = ExtendedFlatPage
class ExtendedFlatPageAdmin(FlatPageAdmin):
form = ExtendedFlatPageForm
fieldsets = (
(None, {'fields': ('url', 'title', 'teaser', 'content', 'sites',)}),
)
admin.site.unregister(FlatPage)
admin.site.register(ExtendedFlatPage, ExtendedFlatPageAdmin)
그리고 창조 괜찮 :
나는이 썼다. 그러나 flatpages/default.html에서 나는 이것을 시도했다 :
<html>
<body>
<h1>{{ flatpage.title }}</h1>
<strong>{{ flatpage.teaser }}</strong>
<p>{{ flatpage.content }}</p>
</body>
</html>
그리고 flatpage.teaser가 없었다! 뭐가 잘못 되었 니?
FlatpageFallbackMiddleware는 여전히 기본 Flatpage 모델을 사용한다고 생각합니다. 또한 당신의 접근법은 [Multi-table inheritance] (http://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance)를 사용할 것입니다. 이것은 확장 된 모델을 위해 생성 된 두 개의 테이블을 가지고 있음을 의미합니다. 귀하의 질의를 덜 효율적으로 만듭니다. –
네, 두 번째 테이블과 오른쪽 값을 보았습니다. 질문은 flatpage 템플릿의 새 필드에 어떻게 액세스 할 수 있습니까? – Stan
일반 FlatPage 대신 확장 모델을 사용하는 사용자 지정 미들웨어를 만들 수 있습니다. FlatpageFallbackMiddleware 코드를 살펴보면, 자신이 필요로하는 패키지를 쉽게 수정할 수 있습니다. –