簡體   English   中英

僅顯示Django管理表單

[英]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.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM