2012-04-11 85 views
0

我有以下型號:爲什麼不modelform_factory使用我的模型字段屬性

class MyModel(models.Model): 
    myField = models.CharField() 
    myOtherField = models.CharField() 

    def __init__(self,*args,**kwargs):    
     super(MyModel,self).__init__(*args, **kwargs) 
     self._meta.get_field_by_name("myField")[0].default = get_default_value() 
     self._meta.get_field_by_name("myOtherField")[0]._choices = get_choices() 

def get_default_value(): 
    # obviously, this does more than just return a static value; 
    # how I actually get the default value for this field isn't relevant for this question 
    return "my default value" 

def get_choices(): 
    # as above, how this works is irrelevant 
    return [("one","one"),("two","two")] 

class MyForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 


MyFormFactory = modelform_factory(MyModel) 

def MyView(request): 
    model = MyModel() 
    form1 = MyForm(instance=model) 
    form2 = MyFormFactory(instance=model) 
    return render_to_response('my_template.html',{'form1':form1, 'form2':form2}) 

Form1中得到正確地呈現,與MyField的默認值和myOtherField渲染爲具有適當選擇一個選擇。但是form2只有兩個空白的TextInput字段。任何想法如何確保從modelform_factory方法生成的表單尊重這些屬性?

回答

0

如果您希望查看每個對象的一系列編輯窗體,我相信您在使用生成的工廠時需要設置queryset參數。默認行爲是顯示所有對象,再加上一個空的表單。

def MyView(request): 
    ... 
    form2 = MyFormFactory(instance=model, queryset=MyModel.objects.all()) 

This link may help。

帶上一粒鹽。這是我第一天玩Python的第一天。

相關問題