2012-10-18 28 views
6

मेरे पास अनेक प्रश्न दूसरी तरह के आसपास देखा है, जो निम्नलिखित के साथ कुछ है के रूप में auth.User में शामिल हैं:Django व्यवस्थापक में, एक इनलाइन

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'profile' 

class NewUserAdmin(UserAdmin): 
    inlines = (UserProfileInline,) 

admin.site.unregister(User) 
admin.site.register(User, NewUserAdmin) 

मुझे क्या करना चाहते हैं रिवर्स है, लेकिन मैं इसे काम करने के लिए नहीं देख सकता। यहां मेरे पास कोड है जो काम नहीं कर रहा है।

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 
from myapp.models import SpecialUserType 

class UserInline(admin.StackedInline): 
    model = User 
    can_delete = False 

class IncludeUserAdmin(admin.ModelAdmin): 
    inlines = (UserInline,) 

admin.register(SpecialUserType, IncludeUserAdmin) 

मैं इस काम कर सकते हैं कैसे इतना है कि UserSpecialUserType के व्यवस्थापक में एक इनलाइन है?

त्रुटि है कि मैं हो रही है:

<class 'django.contrib.auth.models.User'> has no ForeignKey to <class 'students.models.SpecialUserType'> 

यह समझ में आता है, क्योंकि OneToOneFieldUser में SpecialUserType मॉडल में स्थित है, स्पष्ट रूप से और नहीं। लेकिन मैं इसे OneToOneField पर उलटा करने के लिए कैसे प्राप्त कर सकता हूं?

(मैं जानता हूँ कि यह करने के लिए एक असामान्य बात लग सकता है लेकिन इसका कोई खास कारण है कि मैं इस तरह से व्यवस्थापक और आसपास नहीं अन्य तरीके से स्थापित करना चाहते है।)

+0

आप Django किस संस्करण का उपयोग कर रहे हैं? – sepulchered

+0

क्या यह आपके लिए अनुपलब्ध संबंध जोड़ने के लिए उपयोगकर्ता मॉडल को उप-वर्गित करने के लिए काम नहीं करेगा? – Ambroise

उत्तर

1

दुर्भाग्य से यह नहीं हो सकता किया हुआ। मैं कुछ बार खुद से पहले समस्या में भाग गया है।

त्रुटि संदेश कहता है, इनलाइन मॉडल में मुख्य मॉडल को इंगित करने वाली विदेशीकी (या वनटोनफिल्ड) होना चाहिए।

दूसरों के रूप में उल्लेख किया है, मैं ने पाया है उपवर्गीकरण उपयोगकर्ता मेरे लिए बहुत उपयोगी:

class UserProfile(User): 
    user = OneToOneField(User, parent_link=True) 
    # more fields, etc 
+0

जब यह प्रश्न मूल रूप से पूछा गया था, तो 'उपयोगकर्ता' को उपclassing एक विकल्प नहीं था। सौभाग्य से, अब यह है। – jdotjdot

+0

मान लीजिए या नहीं, लेकिन मैं AUTH_USER_MODEL के बिना, मार्च 2010 से उपयोगकर्ता को उप-वर्गीकृत कर रहा हूं। –

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