Python 仅显示django管理表单

Python 仅显示django管理表单,python,django,django-admin,Python,Django,Django Admin,我想让用户(他们已登录)使用管理表单编辑项目,而不让他们访问整个管理界面 这将更容易,并且更好地遵循DRY原则,因为表单只需要在管理设置中定义一次。它还应该避免手动检查用户是否具有编辑该模型的权限,因为这将由管理系统负责 如果我将用户设置为现有人员,我知道我可以将他们指向特定型号/项目的编辑/添加页面,但通过手动编辑url,他们可以找到完整的管理界面(至少是他们可以访问的部分)。此外,除非我更改整个管理主题,否则管理界面没有正确的主题。(我想是吧?) 也许我遗漏了一些明显的东西,有一种非常简单的

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

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

如果我将用户设置为现有人员,我知道我可以将他们指向特定型号/项目的编辑/添加页面,但通过手动编辑url,他们可以找到完整的管理界面(至少是他们可以访问的部分)。此外,除非我更改整个管理主题,否则管理界面没有正确的主题。(我想是吧?)

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

我期待着别人告诉我我是个白痴,有一个简单明了的解决办法


(编辑:我看过django frontendadmin,但它看起来过时了,URL的情况看起来像是一个黑客。)

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

您需要模型中的表单。。。这些被称为

关于如何使用表单,请参见

更新:

自动管理接口重用django.forms。所以
ModelAdmin.form
ModelForm
都是表单。他们有同样的能力。所以如果你想“只显示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.forms。所以
ModelAdmin.form
ModelForm
都是表单。他们有同样的能力。所以如果你想“只显示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(媒体很容易包含)


最后一个小贴士:使用一个可以帮助设计样式、排序、小部件等的应用程序

感谢您的回复,我已经在使用ModelForms(和modelformset),我应该在问题中更清楚地说明这一点。我只是想知道是否有一个更简单的“开箱即用”方法引用管理表单。我想不是-(非常感谢更新,我终于抽出时间来看看这个。我应该说的是我希望表单集也能工作,我最终从工作中实现了这一点。但它绝对不简单。同意表单、模型表单、表单集、媒体、验证、预览、向导和小部件……所有这些都不是那么简单。我一次掌握所有的概念更难的是。但是我回答了你的问题吗?如果是,请接受。如果不是,我想知道你期望的是什么。要求很高。我猜简短的答案是不是。如果有一个像CreateView和UpdateView这样处理表单集的通用表单,那就太好了。表单中小部件和js的装饰不是必需的。感谢feedback、 也许我把重点放在了你们的问题标题上。祝你们编码愉快!谢谢你们的回答,我已经在使用ModelForms(和ModelFormSets),我应该在问题中说得更清楚。我只是想知道是否有一个更简单的“开箱即用”方法引用管理表单。我想不是-(非常感谢更新,我终于抽出时间来看看这个。我应该说的是我希望表单集也能工作,我最终从工作中实现了这一点。但它绝对不简单。同意表单、模型表单、表单集、媒体、验证、预览、向导和小部件……所有这些都不是那么简单。我一次掌握所有的概念更难的是。但是我回答了你的问题吗?如果是,请接受。如果不是,我想知道你期望的是什么。要求很高。我猜简短的答案是不是。如果有一个像CreateView和UpdateView这样处理表单集的通用表单,那就太好了。表单中小部件和js的装饰不是必需的。感谢feedback、 也许我把注意力集中在你的问题上了。快乐的编码!原来是我在寻找的。原来是我在寻找的。