मैं एक स्थिति थी, जहां मैं व्यवस्थापक साइट के आधार पर एक इनलाइन दिखाने के लिए होगी के लिए उपयोगी हो सकता है कि आप एक दी गई कहानी के लिए थे।
alekwisnia के जवाब में विस्तार करते हुए, मैं गतिशील Django 1.3 के लिए काम निम्नलिखित कोड का उपयोग कर inlines प्राप्त करने में सक्षम था:
पर प्रकाश डाला में/admin.py
class HighlightInline(generic.GenericTabularInline):
model = Highlight
extra = 1
max_num = 4
fields = ('order', 'highlight')
template = 'admin/highlights/inline.html'
class HighlightAdmin(admin.ModelAdmin):
def regulate_highlight_inlines(self):
highlights_enabled = Setting.objects.get_or_default('highlights_enabled', default='')
highlight_inline_instance = HighlightInline(self.model, self.admin_site)
highlight_found = any(isinstance(x, HighlightInline) for x in self.inline_instances)
if highlights_enabled.strip().lower() == 'true':
if not highlight_found:
self.inline_instances.insert(0, highlight_inline_instance)
else:
if highlight_found:
self.inline_instances.pop(0)
print self.inline_instances
def change_view(self, request, object_id, form_url='', extra_context=None):
self.regulate_highlight_inlines()
return super(HighlightAdmin, self).change_view(request, object_id)
def add_view(self, request, form_url='', extra_context=None):
self.regulate_highlight_inlines()
return super(HighlightAdmin, self).add_view(request, form_url, extra_context)
कहानी/व्यवस्थापक में। नोट करने के लिए py
class StoryAdmin(HighlightAdmin):
एक बात है कि मैं केवल में नहीं जोड़ तोड़ कर रहा हूँ है लाइन क्लासेस (हाइलाइटइनलाइन) बल्कि, मैं इनलाइन उदाहरणों को बदल रहा हूं (हाइलाइटइनलाइन (self.model, self.admin_site))। ऐसा इसलिए है क्योंकि django ने पहले से ही व्यवस्थापक वर्ग के प्रारंभिक निर्माण के दौरान इनलाइन कक्षाओं की सूची के आधार पर इनलाइन उदाहरणों की एक सूची बनाई है।
स्रोत
2014-06-15 14:27:08
Django के लिए मैं इसे शब्दशः इस्तेमाल किया और यह काम करता है, मैं बदल दिया है, हालांकि साथ 'लौट सुपर (BoxAdmin, आत्म) .change_view (अनुरोध, object_id, form_url, extra_context)' दो रिटर्न और 'वापसी सुपर (BoxAdmin, स्वयं) .add_view (अनुरोध, form_url, extra_context) ' –