2012-01-18 27 views
8

से अलग ऑर्डर करने का चयन करता है मेरे पास एक मॉडल (नोड) है जिसे व्यवस्थापक में दिनांक के अनुसार आदेश दिया जाता है, इसलिए नवीनतम नोड्स पहले दिखाए जाते हैं। यह ठीक है।Django व्यवस्थापक डिफ़ॉल्ट मॉडल ऑर्डरिंग

एक ही मॉडल (नोड) का संदर्भ किसी अन्य मॉडल (डिवाइस) द्वारा किया जाता है। किसी डिवाइस को संपादित करते समय नोड्स की एक सूची होती है (एक HTML चयन में) जिसे तिथि के अनुसार भी आदेश दिया जाता है। मैं इस नाम का चयन करके आदेश के अनुसार आदेश देना चाहता हूं।

क्या दो अलग-अलग ऑर्डरिंग विधियां, ऑब्जेक्ट्स की सूची के लिए एक और चयन बॉक्स के लिए एक होना संभव है?

धन्यवाद।

उत्तर

6

सबसे आसान काम Device के लिए ModelAdmin में formfield_for_foreignkey विधि ओवरराइड करने के लिए हो सकता है,

def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == 'node': 
     kwargs['queryset'] = Node.objects.order_by('name') 
    return super(DeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

की तरह कुछ (मैं पर्याप्त मात्रा में यहाँ यह सोचते हैं रहा हूँ। उम्मीद है कि यह स्पष्ट है!)

इसी प्रकार वहाँ है formfield_for_manytomany

class Node 
     name = ... 
     date = ... 
     fields .... 

     class Meta: 
      order_with_respect_to='Device' 
      ordering = ('Device', 'name') 
+0

यह मेरी पसंदीदा विधि है। –

+1

धन्यवाद, यह काम करता है जैसा कि आप यहां देख सकते हैं: https://github.com/ninuxorg/nodeshot/issues/65 – nemesisdesign

2

आप की तरह कुछ कोशिश की है।

# in models.py we have Device model with Node field 
class Device(models.Model): 
    node = models.ForeignKey(Node) 
    ... 

# in admin.py we have DeviceAdmin with custom form 
class DeviceAdminForm(forms.ModelForm): 
    node = forms.ModelChoiceField(queryset=Node.objects.order_by('name'), label='Node') 

    class Meta: 
     model = Device 

class DeviceAdmin(admin.ModelAdmin): 
    form = DeviceAdminForm 
+0

मुझे वह विकल्प नहीं पता था, मुझे कुछ नया सिखाने के लिए +1, लेकिन मुझे नहीं लगता मेरी समस्या हल करता है – nemesisdesign

+0

इस समाधान को अभी भी उचित पदानुक्रम में मूल्यों को सूचीबद्ध करने के लिए व्यवस्थापक पैनल में