2013-04-12 8 views
12

के लिए क्वेरीसेट ओवरराइड करना मुझे अपने इनलाइन व्यवस्थापक के लिए क्वेरीसेट ओवरराइड करने में कुछ परेशानी हो रही है।इनलाइन व्यवस्थापक

class MyInlineAdmin(admin.TabularInline): 
    model = MyInlineModel 
    def queryset(self, request): 
     qs = super(MyInlineAdmin, self).queryset(request) 
     return qs 

class ParentAdmin(admin.ModelAdmin): 
    inlines = [MyInlineAdmin] 
admin.site.register(ParentAdminModel, ParentAdmin) 

अब मैं qs.filter(user=request.user) या qs.filter(date__gte=datetime.today()) कोई समस्या नहीं कर सकते हैं:

यहाँ एक दलदल की मानक माता पिता व्यवस्थापक और इनलाइन व्यवस्थापक है।

लेकिन मुझे जो चाहिए वह MyInlineModel उदाहरण या ParentAdminModel इंस्टेंस (मॉडल नहीं!) है, क्योंकि मुझे इसके आधार पर अपनी क्वेरीसेट फ़िल्टर करने की आवश्यकता है।

क्या क्वेरीनेट() विधि के अंदर self.instance या obj (get_readonly_fields() या get_formset() में कुछ प्राप्त करना संभव है?

आशा है कि यह समझ में आता है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है। इस बारे में अधिक के लिए

class MyInlineModel(models.Model): 
    car=models.Foreignkey(Car) 
    #blah 

;:

अपने मॉडल
+0

http://stackoverflow.com/questions/14950193/how-to-get-the-current-model-instance-from-inlineadmin-in-django उपयोगी हो सकता है –

+0

ध्यान दें कि Django 1.6 में क्वेरीसेट विधि का नाम बदलकर get_queryset कर दिया गया था। https://docs.djangoproject.com/en/dev/releases/1.6/#get-query-set-and-similar-methods-renamed-to-get-queryset – jenniwren

उत्तर

6
class MyInlineAdmin(admin.TabularInline): 
    model = MyInlineModel 
    def formfield_for_foreignkey(self, db_field, request=None, **kwargs): 
     """enable ordering drop-down alphabetically""" 
     if db_field.name == 'car': 
      kwargs['queryset'] = Car.objects.order_by("name") 
     return super(MyInlineAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

class ParentAdmin(admin.ModelAdmin): 
    inlines = [MyInlineAdmin] 

admin.site.register(ParentAdminModel, ParentAdmin) 

इम संभालने कुछ इस प्रकार दिखाई formfield_for_foreignkey पर Django डॉक्स पढ़ा -> https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

+1

यह बिल्कुल काम नहीं करता है। 'Formfield_for_foreignkey' ड्रॉपडाउन और इसी तरह के विजेट के लिए है। [इस समाधान] देखें (http://stackoverflow.com/questions/6703652/limit-the-queryset-of-entries-displayed-for-a-django-admin-inline) इसके बजाए। – piro

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