2011-11-13 8 views
6

मैं एक कस्टम उपयोगकर्ता व्यवस्थापक उपयोग कर रहा हूँ:का उपयोग करते हुए कस्टम उपयोगकर्ता व्यवस्थापक टूट जाता है Django के व्यवस्थापक में पासवर्ड प्रपत्र बदल

class CustomUserAdmin(admin.ModelAdmin): 
    model = User 
    ... 
admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 

लेकिन जब मैं व्यवस्थापक पृष्ठ के माध्यम से पासवर्ड बदलने का प्रयास मैं एक 404.

मिल
user object with primary key u'4/password' does not exist. 

डिफ़ॉल्ट उपयोगकर्ता व्यवस्थापक पर वापस लौटना ठीक काम करता है।

उत्तर

16

django.contrib.auth.admin में डिफ़ॉल्ट UserAdmin परिवर्तन पासवर्ड पृष्ठ सहित कई कार्यक्षमता लागू करता है।

CustomUserAdminadmin.ModelAdmin के बजाय UserAdmin को उपclass करना चाहिए, जब तक कि आप स्वयं कार्यक्षमता को फिर से कार्यान्वित नहीं करना चाहते।

class CustomUserAdmin(UserAdmin): 
    # as an example, this custom user admin orders users by email address 
    ordering = ('email',) 

admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 
+0

यह मेरे लिए काम करता है लेकिन यह कोड रखने के बाद: बहिष्कृत करें ('is_superuser', 'user_permissions') इसे तोड़ देता है। – wenbert

+1

@ वेनबर्ट आपको 'फ़ील्डसेट' को ओवरराइड करने की आवश्यकता है। दोनों_superuser और user_permissions 'UserAdmin.fieldsets' में शामिल हैं। आप फ़ील्ड में फ़ील्ड शामिल नहीं कर सकते हैं, फिर इसे बाहर कर दें। – Alasdair

1

इसके अलावा:

रूप the docs प्रति, यदि आप AbstractBaseUser से विरासत आप डिफ़ॉल्ट UserAdmin का उपयोग नहीं कर सकते हैं; या, एक और तरीका डालें, आप केवल कार्यक्षमता का एक सबसेट काम कर सकते हैं - एक मौजूदा पासवर्ड बदलना काम कर सकता है, लेकिन एक नया उपयोगकर्ता जोड़ना अपवाद फेंक देगा।

संबंधित मुद्दे