1

Django flatpages 使用与 django Site 模型的多对多关系

class FlatPage(Model)
    ...
    sites = ManyToManyField(Site)

创建新的平面页面时必须选择一个站点。虽然我以后可能会使用多个站点,但现在没有必要烦人。我想在添加表单上预先选择当前(也是唯一的)站点。我不知道如何做到这一点。我对默认的平面页面行为进行了其他几个成功的修改。但这一个逃脱了我。

我想做如下的事情:

sites = ManyToManyField(Site, default=Site.objects.get_current)

但这不起作用。任何帮助表示赞赏。

4

4 回答 4

0

您是否尝试过 limit_choices_to参数?

或者,如果您不需要依赖于站点框架,则可以远离平面页面并创建自己的自定义页面模型。

于 2009-05-26T19:12:27.370 回答
0

你在获取电流后忘记了尾随括号

Site.objects.get_current()

于 2009-04-24T15:53:30.240 回答
0

您可以扩展 FlatPageAdmin、排除站点并使用当前站点保存平面页面。有点:

class ExtendedFlatPageAdmin(FlatPageAdmin):
    fieldsets = (
        (None, {
            'fields': ('url', 'title', 'content')
        }),
        ('Advanced options', {
            'classes': ('collapse',),
            'fields': ('enable_comments', 'registration_required', 'template_name')
        }),
    )

    def save_model(self, request, obj, form, change):
        obj.save()
        current_site = Site.objects.get_current()
        obj.sites.add(current_site)
于 2009-07-14T22:29:31.573 回答
0

我最终只是使用了一个小 jquery 来做到这一点。它不是很便携,但对我有用。站点的选择框的 ID 为“id_sites”,因此:

$('#id_sites').attr('selectedIndex',0);

只需自动选择第一个选项。我把它放在文档加载事件中,它工作得很好。

于 2010-02-20T21:31:30.610 回答