2012-03-26 20 views
1

models.py的Django的forms.py沒有得到新的值從DB

class Test(models.Model): 
    name = models.CharField(max_length=256) 
    slug_name = models.CharField(max_length=256) 
    template = models.BooleanField("Is Template",default=False) 

    @staticmethod 
    def template_as_tuple(): 
     return Test.objects.filter(template=True).values_list('id','name') 

forms.py

class Test2(forms.ModelForm): 
    templates = forms.ChoiceField(choices=Catalogue.predefined_settings_as_tuple(), required=False) 
    path = orms.FileField() 

問題是,當我在它不是所示的模型添加模板更新forms.py。我需要重新啓動網絡服務器才能顯示更新

回答

3

擺脫靜態方法。形式而是執行此操作:

class Test2(forms.ModelForm): 
    templates = forms.ModelChoiceField(queryset=Test.objects.filter(template=True)) 
1

@丹尼爾的答案是正確的,但如果你要經常過濾的對象,一個custom manager可能更合適:

class TemplateFilter(models.Manager): 
    def get_query_set(self): 
     return super(TemplateFilter, self).get_query_set().filter(template=True) 

class Test(models.Model): 
    name = models.CharField(max_length=256) 
    slug_name = models.CharField(max_length=256) 
    template = models.BooleanField("Is Template",default=False) 

    objects = models.Manager() 
    templates = TemplateFilter() 

class Test2(forms.ModelForm): 
    templates = forms.ModelChoiceField(queryset=Test.templates.all())