在djang中访问扩展flatpage中的字段

2024-10-03 17:25:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在django中访问扩展flatpage中的字段?
我写的是:

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)

在管理中创建是可以的。但在平版纸上/默认.html我试过了:

^{pr2}$

没有扁平页.摘要! 怎么了?在


Tags: djangoadminsitelengthmaxmetaclasscharfield
2条回答

是的,正如rebus提到的,flatpagefallback中间件将把默认的FlatPage模型实例传递给模板。但是在您的例子中,模板变量{{ flatpage }}也将记住它是否是ExtendedFlatPage实例,如django-docs所述。在

因此,要将您的flatpage视为ExtendedFlatPage,您必须使用:

{{ flatpage.extendedflatpage.teaser }}而不是{}。在

确定您将正确的对象传递给模板,而不是一个普通的FlatPage?在

另外,除非您的代码粘贴来自不同的文件并且您没有显示导入,否则您的模型应该有来自django.模型你的表格呢django.forms公司. 你没有在你的小模板中显示表格,所以我认为这不是问题所在。。。但如果你的模特“挑逗”是来自django.forms.CharField而不是django.models.CharField然后。。。你可能看不到。但你说在管理部门可以吗?在

你确定它呈现的模板不是一个相似的模板吗?(您的至少应该有一个空的<;blockquote>;对)。在

从django shell中尝试,获取对象(foo=ExtendedFlatPage.objects.get(id=1)或类似的)和美食挑逗者在上面。。。在

相关问题 更多 >