我想知道他們如何在Django管理站點的用戶頁面中顯示更多的字段。 如果你創建一個新的用戶,你只需要填寫一些基本字段,但是如果你重新打開該用戶(編輯模式),那麼你會看到更多的字段來填充。Django管理站點:添加用戶頁面如何工作(編輯時有更多字段)?
我試圖達到相同,我看了add_form.html
模板,但我無法真正瞭解它。我想我正在尋找一種根據文檔的編輯狀態指定不同字段= []集的方法。
謝謝!
我想知道他們如何在Django管理站點的用戶頁面中顯示更多的字段。 如果你創建一個新的用戶,你只需要填寫一些基本字段,但是如果你重新打開該用戶(編輯模式),那麼你會看到更多的字段來填充。Django管理站點:添加用戶頁面如何工作(編輯時有更多字段)?
我試圖達到相同,我看了add_form.html
模板,但我無法真正瞭解它。我想我正在尋找一種根據文檔的編輯狀態指定不同字段= []集的方法。
謝謝!
答案在於the custom admin class registered for the User model。它覆蓋ModelAdmin
上的幾個方法,並檢查當前請求是否正在創建新的User
(在這種情況下,使用添加帳戶的基本類)或編輯現有的請求(在這種情況下,完整的表單是示出)。
這是我的嘗試。當我嘗試創建一個新的項目(添加),它只顯示某些字段,但後來當我點擊保存它返回一個錯誤:
DoesNotExist
在/Library/Python/2.6/site-packages/django/db/車型/場/ related.py在得到,線288
admin.py
from django.contrib import admin
from myapp.catalog.models import Model
from myapp.catalog.forms import ProductAdminForm, ProductAddForm
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
#...
add_form = ProductAddForm
def get_form(self, request, obj=None, **kwargs):
defaults = {}
if obj is None:
defaults.update({
'form': self.add_form,
})
defaults.update(kwargs)
return super(ProductAdmin, self).get_form(request, obj, **defaults)
forms.py
from myapp.catalog.models import Product
class ProductAdminForm(forms.ModelForm):
class Meta:
model = Product
#...
class ProductAddForm(forms.ModelForm):
class Meta:
model = Product
fields = ("model", "colour",)
什麼錯誤信息? – 2011-08-29 00:37:01
特別是,請參閱'get_form':http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/admin.py#L63 – 2010-10-14 08:54:40
恩....感謝您的鏈接。我無法真正理解代碼(或者更好地說它是如何工作的)。編輯表單時是否將obj設置爲None?默認對象做什麼?如果你能夠爲我自己的模型(在創建模式下顯示一些字段,而在編輯模式下顯示其他字段)使用此功能,我將非常感激。謝謝 ! – 2010-10-14 09:02:05