2013-10-29 7 views
11

पर आधारित इनलाइन फ़ील्ड मान मैं माता-पिता के रूप/उदाहरण के गुणों के आधार पर एक इनलाइन पर किसी विकल्प फ़ील्ड के डिफ़ॉल्ट मान सेट करने का प्रयास कर रहा हूं।Django - मूल उदाहरण

def get_form(self, ***): 
    if self.parent.instance && self.parent.instance.field_x == "y": 
     self.field_name.choices = ... 

मैं गूगल पर खोज की है, लेकिन एक इनलाइन के भीतर से माता-पिता प्रपत्र को संदर्भित बारे में कुछ भी खोजने के लिए प्रतीत नहीं कर सकते हैं:

छद्म कोड में, यह कुछ ऐसा दिखाई देगा।

शायद मुझे इसे दूसरी तरफ करना है, और माता-पिता के भीतर से इनलाइनों तक पहुंच बनाना है?

def get_form(self, ***): 
    if self.instance: 
     for inline in self.inlines: 
      if instanceof(inline, MyInline): 
      inline.field_name.choices = ... 

क्या इनमें से कोई भी संभव है?

+4

क्या आपने इसे आजमाया? http://stackoverflow.com/questions/1824267/limit-foreign-key-choices-in-select-in-an-inline-form-in-admin – gorus

+1

मैं इसे नियमित रूप से करता हूं। Get_form के बजाय _construct_form का उपयोग करें। – Esteban

उत्तर

1

आप get_form_kwargs विधि का उपयोग करें और फार्म init विधि में की तरह तो

class Form(forms.Form): 
    def __init__(self, *args, **kwargs): 
     choices = kwargs.pop('choices', None) 
     super(Form, self).__init__(*args, **kwargs) 
     form.field.choices = choices 

class FormView(generic.FormView): 

    def get_form_kwargs(self, *args, **kwargs) 
     kwargs = super(FormView, self).get_form_kwargs() 
     kwargs['choices'] = choices 
     return kwargs 

आप get_form_kwargs विधि में अपने माता पिता वस्तु की जांच करते हैं और एक अलग विकल्प प्रेषित कर सकता है विकल्प दे सकते हैं (मुझे लगता है कि)

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