2012-03-26 6 views
1

models.pyDjango forms.py nicht mit neuen Werten von 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() 

Das Problem immer aktualisiert ist, wenn ich Vorlagen hinzufügen in den Modellen ist es nicht gezeigt in die form.py. Ich muss den Webserver neu starten, damit die Updates angezeigt werden

Antwort

3

Befreien Sie sich von dieser statischen Methode. Tun Sie dies in der Form statt:

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

@ Daniel Antwort ist richtig, aber wenn Sie die Objekte oft Filterung wird, ein custom manager könnte besser geeignet sein:

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()) 
Verwandte Themen