Django flatpages 默认站点

标签 django django-flatpages

大多数情况下,我为一个站点使用平面页面(来自站点框架)。如何为所有创建的平面页面标记现有站点默认值?
每次为创建的每个页面选择相同的站点都是浪费时间。有没有办法在模型或保存方法中覆盖它?

最佳答案

允许站点字段中的空白(models.py -> FlatPage.sites)并将其放入您的模型表单中(admin.py -> FlatPageForm)

def clean_sites(self):
    sites = self.cleaned_data.get('sites')
    print sites
    return [Site.objects.get(id=settings.SITE_ID)]

编辑:
我想出了一个更好的解决方案。
这使得当前站点已经专注于多对多站点领域。编辑 flatpages/admin.py。地址:from django.contrib.sites.models import Site在文件的开头,将以下代码放入 class FlatPageAdmin :
    def formfield_for_manytomany(self, db_field, request=None, **kwargs):
    if db_field.name == "sites":
        kwargs["initial"] = [Site.objects.get_current()]
    return super(FlatPageAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

无需在 FlatPage 模型中的站点字段中允许空白

关于Django flatpages 默认站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786784/

相关文章:

django - tinymce django 没有出现

python - 内联 django shell 与 python shell 中的变量范围

python - 更漂亮的 vscode 扩展不支持 Django 模板标签 {% tag %}

python - Django 查询,平均计数不同

python - 在views.py中调用models.py的方法而不创建实例

python - Django Flatpages 模板标签不适用于模板继承

django - 在 Django 中,您可以让多个应用程序处理 404 吗?

Django:将表单数据保存到数据库

django - Django 中平面页面的特定模板