【问题标题】:Display django admin form only仅显示 django 管理表单
【发布时间】:2013-09-16 02:28:26
【问题描述】:

我想让用户(他们已登录)使用管理表单编辑项目,但他们无法访问整个管理界面。

这会更容易并且更好地遵循 DRY 原则,因为表单只需要在管理设置中定义一次。它还应该避免必须手动检查用户是否有权编辑该模型,因为这将由管理系统处理。

如果我将用户设置为 is_staff,我知道我可以将他们指向特定模型/项目的编辑/添加页面,但是通过手动编辑 url,他们可以找到进入完整管理界面的方式(至少有点他们可以访问)。除非我更改整个管理主题,否则管理界面也没有正确的主题。 (我认为?)

也许我遗漏了一些明显的东西,并且有一种超级简单的方法可以测试用户是否能够添加/编辑模型并根据 app/ 中的相关类为模型生成整个表单(包括表单集) admin.py,但我还没有找到。

我期待被告知我是个白痴,并且有一个明显而简单的解决方案。

(编辑:我查看了 django-frontendadmin,但它看起来已经过时了,而且 url 的情况看起来很糟糕。)

【问题讨论】:

标签: python django django-admin


【解决方案1】:

管理员仅适用于受信任的用户。因此,向您网站的所有用户开放管理员是一个坏主意。

您需要模型中的表单...这些称为modelforms

>>> from django.forms import ModelForm
>>> from myapp.models import Article

# Create the form class.
>>> class ArticleForm(ModelForm):
...     class Meta:
...         model = Article
...
>>> form = ArticleForm()

如何使用表单在forms documentation

更新:

自动管理界面重用 django.forms。所以ModelAdmin.formModelForm 都是形式。他们有能力做同样的事情。因此,如果您想'仅显示 django 管理表单...简单且开箱即用'。比modelform 是答案。证明:

from django.db import models
from django.forms import ModelForm
from django.contrib import admin

class Author(models.Model):
   pass

class AuthorForm(ModelForm):
    class Meta:
        model = Author        

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

print AuthorForm.__class__ == AuthorAdmin.form.__class__ # True

我能想到的唯一区别是:ModelAdmin.form 中的一些字段使用管理小部件(小部件很容易定义),而管理有一些图像、js 和 css(媒体很容易包含)。

最后一个提示:使用有助于设置样式、排序、小部件等的应用程序,例如 django-crispy-forms

【讨论】:

  • 感谢您的回复,我已经在使用 ModelForms(和 ModelFormSets),我应该在问题中更清楚地说明这一点。我只是想知道是否有一个更简单的“开箱即用”方法来引用管理表单。我猜不会。 :-(
  • 非常感谢您的更新,我终于开始看这个了。我应该说的是我希望表单集也能工作,我最终通过haineault.com/blog/155 实现了这个工作。但这绝对不简单。
  • 同意表单、modelfroms、formsets、媒体、验证、预览、向导和小部件……总之不是那么简单。同时掌握所有概念更加困难。但是我回答你的问题了吗?如果是,请接受。如果不是,那我不知道你的预期是什么。
  • 要求很高。我想简短的回答是否定的。如果有一个像 CreateView 和 UpdateView 这样的通用表单来处理表单集,那就太好了。表单中widget和js的修饰不是必须的。
  • 感谢您的反馈。也许我非常关注您的问题标题。编码愉快!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2016-05-27
相关资源
最近更新 更多