大多数情况下,我为一个站点使用平面页面(来自站点框架)。如何为所有创建的平面页面标记现有站点默认值?
每次为创建的每个页面选择相同的站点都是浪费时间。有没有办法在模型或保存方法中覆盖它?
最佳答案
允许站点字段中的空白(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/