1

我想知道他們如何在Django管理站點的用戶頁面中顯示更多的字段。 如果你創建一個新的用戶,你只需要填寫一些基本字段,但是如果你重新打開該用戶(編輯模式),那麼你會看到更多的字段來填充。Django管理站點:添加用戶頁面如何工作(編輯時有更多字段)?

我試圖達到相同,我看了add_form.html模板,但我無法真正瞭解它。我想我正在尋找一種根據文檔的編輯狀態指定不同字段= []集的方法。

謝謝!

回答

2

答案在於the custom admin class registered for the User model。它覆蓋ModelAdmin上的幾個方法,並檢查當前請求是否正在創建新的User(在這種情況下,使用添加帳戶的基本類)或編輯現有的請求(在這種情況下,完整的表單是示出)。

+0

特別是,請參閱'get_form':http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/admin.py#L63 – 2010-10-14 08:54:40

+0

恩....感謝您的鏈接。我無法真正理解代碼(或者更好地說它是如何工作的)。編輯表單時是否將obj設置爲None?默認對象做什麼?如果你能夠爲我自己的模型(在創建模式下顯示一些字段,而在編輯模式下顯示其他字段)使用此功能,我將非常感激。謝謝 ! – 2010-10-14 09:02:05

1

這是我的嘗試。當我嘗試創建一個新的項目(添加),它只顯示某些字段,但後來當我點擊保存它返回一個錯誤:

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",) 
+0

什麼錯誤信息? – 2011-08-29 00:37:01

相關問題