Django flatpages默认网站

Ali*_*lov 8 django django-flatpages

我主要使用flatpages作为一个站点(来自站点框架).如何为所有创建的flatpages标记现有网站默认值?每次为每个创建的页面选择相同的站点都浪费时间.有没有办法在模型或保存方法中覆盖它?

sel*_*ler 8

允许在站点字段中显示空白(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)]
Run Code Online (Sandbox Code Playgroud)

编辑: 我想出了一个更好的解决方案. 这使得当前站点已经集中在ManyToMany站点字段中.编辑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)
Run Code Online (Sandbox Code Playgroud)

FlatPage模型中的站点字段不需要允许空白


Ali*_*lov 2

这是我的代码,它有效:

class CustomFlatPage(FlatPage):
    def save(self):
        super(CustomFlatPage, self).save()
        self.sites = [Site.objects.get(pk=1)]
        super(CustomFlatPage, self).save()
Run Code Online (Sandbox Code Playgroud)