2013-08-19 8 views
5

मुझे एक समस्या है।Django इनलाइन मॉडल व्यवस्थापक फ़िल्टर विदेशी क्षेत्र

मैं 3 मॉडल है:

class Deal(models.Model): 
    name = models.CharField(max_length=80) 

class Site(models.Model): 
    name = models.CharField(max_length=80) 
    deal = models.ForeignKey(Deal) 

class Picture(models.Model): 
    title = models.CharField(max_length=80) 
    deal = models.ForeignKey(Deal) 
    site = models.ForeignKey(Site) 

मैं साइट & चित्र इनलाइन व्यवस्थापक मॉडलों के साथ डील व्यवस्थापक बनाना चाहते:

class SiteInline(admin.StackedInline): 
    model = Site 
    extra = 1 


class PictureInline(admin.StackedInline): 
    model = Picture 
    extra = 1 


class DealAdmin(admin.ModelAdmin): 
    inlines = [ 
     SiteInline, 
     PictureInline, 
    ] 

मुझे क्या करना चाहते हैं जब मैं पिक्चर में साइट का चयन कर रहा हूँ व्यवस्थापक यह केवल उन साइटों को दिखाता है जो मैं वर्तमान डील से संबंधित हूं (यदि मैं अद्यतन कर रहा हूं - नया निर्माण नहीं कर रहा हूं)।

मैं इसे व्यवस्थापक में काम करना चाहता हूं, मैंने वेब पर कई घंटे बिताए हैं लेकिन कुछ भी उपयोगी नहीं मिला, कृपया मदद करें!

मैं इसे इस तरह से करने के लिए कोशिश कर रहा था, लेकिन मैं कैसे माता पिता मॉडल उदाहरण का उपयोग करने की सौदा आईडी प्राप्त करने के लिए पता नहीं है:

def formfield_for_foreignkey(self, db_field, request=None, **kwargs): 

    if db_field.name == 'site': 
     kwargs['queryset'] = Site.objects.filter(deal__id=1) 

    return super(PictureInline, self).formfield_for_foreignkey(db_field, request=None, **kwargs) 

उत्तर

0

Django: accessing the model instance from within ModelAdmin?

class PictureInlineForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(PictureInlineForm, self).__init__(*args, **kwargs) 
     self.fields['site'].queryset = Site.objects.filter(
      deal=self.instance.deal) 

class PictureInline(admin.ModelAdmin): 
    form = PictureInlineForm 
+0

'' 'वर्ग PictureInline (admin.ModelAdmin):' '' यह ठीक है? इसे बनाना और इसे चित्र के साथ पंजीकृत करना, '' '' चित्र 'पिक्चरइनलाइनफॉर्म' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' .''' – raratiru

1

DTing के संस्करण में मुझे समस्या दिखाई देती है - self.instance.deal संपादन मोड में सेट किया गया है, लेकिन यह मोड

जोड़ने में परेशान है, मुझे लगता है कि आपको

लिखा जाना चाहिए
try:   
    self.fields['site'].queryset = Site.objects.filter(deal=self.instance.deal) 
except: 
    self.fields['site'].queryset = Site.objects 

बजाय

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