2013-10-29 16 views
11

Ana formun/örneğin özelliklerine bağlı olarak bir satır içi bir seçim alanının varsayılan değerlerini ayarlamaya çalışıyorum. Ben Google'da arama yaptıktan ama bir satır içi içinden ebeveyn formu başvuran hakkında bir şey bulmak için görünmüyor olabilirDjango - Ebeveyn örneğine dayalı satır içi değerler

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

:

sözde kod, bu gibi bir şey olacaktır.

Belki bunu başka bir şekilde yapmak zorundayım ve üst dizinin içinden gelen satırlara erişmem gerekiyor mu?

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

Yukarıdakilerden herhangi biri var mı?

+4

Bunu denediniz mi? http://stackoverflow.com/questions/1824267/limit-foreign-key-choices-in-select-in-an-inline-form-in-admin – gorus

+1

Bunu düzenli olarak yapıyorum. Get_form yerine _construct_form kullanın. – Esteban

cevap

1

Sen get_form_kwargs yöntemini kullanın ve farklı bir seçim get_form_kwargs stilini üst nesne denetimi yapmak ve geçebileceği böylece

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 

gibi formu init yönteminin içine seçimler geçebileceği

(Sanırım)