Django forms.py не обновляется новыми значениями из БД - PullRequest
1 голос
/ 26 марта 2012

models.py

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. Мне нужно перезапустить веб-сервер для отображения обновлений

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Избавьтесь от этого статического метода.Сделайте это в форме вместо:

class Test2(forms.ModelForm):
    templates = forms.ModelChoiceField(queryset=Test.objects.filter(template=True))
1 голос
/ 26 марта 2012

@ Даниэль ответит правильно, но, если вы будете часто фильтровать объекты, вам может подойти пользовательский менеджер :

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...