2009-08-02 78 views

回答

3

当然,你可以通过下面的说明here定制管理非常精细地 - 我相信你想有一部分可以通过在自己的ModelAdmin子类覆盖ModelAdmin.save_model(self, request, obj, form, change),以确保没有获得什么样的商店发生在change是假的(即尝试添加而不是改变),部分通过重写ModelAdmin.add_view(self, request, form_url='', extra_context=None)来显示“添加视图”,这使得管理员非常清楚他们将不被允许通过该路线添加对象。我还没有真正完成你需要的特定的管理定制,但我已经完成了其他的工作,而且他们似乎工作得很顺利!

+0

谢谢你的答案。我希望能够实现这一点的设置,即save_as ModelAdmin属性的工作方式。 – 2009-08-02 02:06:22

+0

我不知道在股票Django 1.0这样的设置,但也许有一些> 1.0和/或contrib hack来提供它 - 股票1.0.something是我坚持到目前为止(主要是因为它运行良好应用引擎,我承认;-)。 – 2009-08-02 02:47:19

3

您可以在管理界面中为每个用户组定制权限:尝试去/admin/auth/group,从那里应该很简单。

这不像前面答案提供的解决方案那么细致,但它可以满足您的大多数需求,而无需自定义管理员。

2

如果您更改限制访问的权限,那么您仍然可以通过FK/MtM字段获得加号。点击它将打开一个弹出窗口,其中包含“权限被拒绝”。

实际上,您完全可以通过不向管理员注册模型来完全删除加号。

我有一种情况,我有预定义的类别,我希望用户能够选择多个。最好的方法是使用models.ManyToMany字段。您可以向管理员注册模型,根据需要输入数据,然后删除注册。

1

一个简单有效的方法是为该特定内联设置max_num=0

0

Satya建议设置max_num = 0的作品完美。

每对的ModelForm类Django文档:

对于支持JavaScript的浏览器,用户的“添加其他”链接以使任何数量的额外的内联到除了那些添加提供作为额外论证的结果。

如果当前显示的窗体数量超过max_num,或者用户没有启用JavaScript,则动态链接不会显示。

与常规表单集,您可以使用MAX_NUM和额外的参数modelformset_factory限制显示额外表格的数量。

MAX_NUM不会阻止现有对象显示