Удалите поля из ModelForm

Необходимо поместить

from project import Project

в controllers/__init__.py.

Примечание это, когда Абсолютный импорт становится значением по умолчанию (Python 2.7?), Вы захотите добавить точку перед именем модуля (для предотвращения коллизий с моделью верхнего уровня, названной project), т.е.

from .project import Project

8
задан schneck 24 September 2009 в 07:20
поделиться

4 ответа

Как описано в Создание форм из моделей - Выбор полей для использования , есть три способа:

  1. В модели установить editable = False . Все формы, созданные на основе модели, будут исключать поле.
  2. Определите атрибут fields во внутреннем классе Meta , чтобы включить только те поля, которые вы хотите.
  3. Определите ] exclude во внутреннем классе Meta для перечисления полей, которые вам не нужны.

Итак, если ваша модель имеет поля field1 , field2 и field3 , и вы не хотите field3 , метод № 2 будет выглядеть так:

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ('field1', 'field2')

А метод № 3 будет выглядеть так:

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        exclude = ('field3',)
6
ответ дан 5 December 2019 в 07:12
поделиться

Вы можете использовать свойство exclude для удаления полей из ModelForm

exclude = ('field_name1', 'field_name2,)
0
ответ дан 5 December 2019 в 07:12
поделиться

Одна из причин, о которой я могу думать, - это если ваш класс ModelAdmin, который использует вашу настраиваемую форму, имеет конфликтующие настройки. Например, если вы также явно указали поле «имя» в «полях» или «наборах полей» вашего ModelAdmin.

1
ответ дан 5 December 2019 в 07:12
поделиться

У меня была такая же проблема. Вот как я заставил его работать в новом Django (trunk):

class MyModelAdmin(admin.ModelAdmin):
    # Your stuff here..

    def get_form(self, request, obj=None, **kwargs):
        if request.user.is_staff: # condition
            self.exclude = ('field',)
        return super(PublishAdmin, self).get_form(request, obj=obj, **kwargs)

Переопределив метод get_form и поместив здесь логику, вы можете выбрать, какую форму вы хотите отображать . Выше я отобразил стандартную форму, когда было выполнено условие.

13
ответ дан 5 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: