![](/img/trans.png)
[英]Django: display only the items available in an admin form | OneToOneField
[英]Display django admin form only
我想讓用戶(他們已登錄)使用管理表單來編輯項目,而無需他們訪問整個管理界面。
這將更容易並且更好地遵循DRY原理,因為僅需在管理員設置中定義一次表單即可。 它還應避免必須手動檢查用戶是否具有編輯該模型的權限,因為這將由管理系統處理。
如果我將用戶設置為is_staff,我知道我可以將他們指向特定模型/項目的編輯/添加頁面,但是通過手動編輯url,他們可以找到進入完整管理界面的方式(至少可以訪問該位)至)。 除非我更改整個管理主題,否則管理界面也沒有正確的主題。 (我認為?)
也許我缺少明顯的東西,並且有一種超級簡單的方法來測試用戶是否能夠基於app / admin.py中的relevent類添加/編輯模型並為模型生成整個表單(包括表單集)。 ,但尚未找到。
我期待着被告知我是個白痴,並且有一個顯而易見的簡單解決方案。
(編輯:我看過django-frontendadmin,但是它看起來已經過時,URL的情況看起來很糟。)
管理員僅適用於受信任的用戶。 因此,向網站的所有用戶開放管理員是一個壞主意。
您需要模型中的表單...這些被稱為modelforms 。
>>> from django.forms import ModelForm
>>> from myapp.models import Article
# Create the form class.
>>> class ArticleForm(ModelForm):
... class Meta:
... model = Article
...
>>> form = ArticleForm()
更新:
自動管理界面重復使用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-crispy-forms 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.