Динамически исключая поле из Django ModelForm - PullRequest
0 голосов
/ 29 мая 2018

Я хочу исключить, программно, поле в моей форме.В настоящее время у меня есть это:

class RandomForm(BaseForm):
    def __init__(self, *args, **kwargs):

        # This doesn't work
        if kwargs["instance"] is None:
            self._meta.exclude = ("active",)

        super(ServiceForm, self).__init__(*args, **kwargs)

        # This doesn't work either
        if kwargs["instance"] is None:
            self._meta.exclude = ("active",)

    class Meta:
        model = models.Service
        fields = (...some fields...)

Как я могу исключить поле active только при создании новой модели?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Django ModelForm предоставляет атрибут exclude.Вы пробовали это?

class RandomForm(ModelForm):

    class Meta:
        model = models.Service
        exclude = ['is_active']
0 голосов
/ 29 мая 2018

Вы можете решить это следующим образом:

class RandomForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(RandomForm, self).__init__(*args, **kwargs)
        if not self.instance:
            self.fields.pop('active')

    class Meta:
        model = models.Service
        fields = (...some fields...)
...