2011-01-17 10 views
9

कहें कि मेरे पास Django मॉडल क्लास है:क्या आप मॉडल के लिए एकाधिक मॉडल एडमिन्स पंजीकृत कर सकते हैं? वैकल्पिक?

class Foo(models.Model): 
bar = models.CharField() 
baz = models.CharField() 

और ModelAdmins:

class Foo_Admin_1(admin.ModelAdmin): 
list_display = ['id','bar'] 

class Foo_Admin_2(admin.ModelAdmin): 
list_display = ['id','baz'] 

क्या मॉडल एडमिन दोनों को पंजीकृत करने का कोई तरीका है ताकि वे Django Admin इंटरफ़ेस के अंतर्गत दिखाई दे सकें?

मैंने कोशिश की:

admin.site.register(Foo,Foo_Admin_1) 
admin.site.register(Foo,Foo_Admin_2) 

लेकिन मुझे त्रुटि मिलती है:

The model Foo is already registered 

कोई सुझाव?

यदि नहीं, तो मॉडलएडमिन परिवर्तन सूची दृश्य में दिखाए गए फ़ील्ड को नियंत्रित करने के लिए वैकल्पिक तरीके (गतिशील रूप से) हैं?

उत्तर

11

एक खाली प्रॉक्सी उपवर्ग बनाएँ और बजाय इसे पंजीकृत:

class Foo(models.Model): 
    bar = models.CharField() 
    baz = models.CharField() 

# admin.py 
class FooProxy(Foo): 
    class Meta: 
     proxy=True 

admin.site.register(Foo, FooAdmin1) 
admin.site.register(FooProxy, FooAdmin2) 
+0

धन्यवाद, यह हो सकता है मैं क्या देख रहा था, मैं इसे एक शॉट दे देंगे। –

+0

हाँ, मैं इस विधि का उपयोग करके मुझे जो कुछ चाहिए, वह ठीक करने में सक्षम था, धन्यवाद –

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