изменить значение формы администратора admin

У меня типичное наследование модели в моем проекте:

class A(models.Model): boolean_field = models.BooleanField(default=True) class B(A): some_other_field = models.CharField() 

Я хочу переопределить значение по умолчанию для boolean_field в классе B , как я могу это сделать?

Я думаю, что это может быть сложной задачей на уровне базы данных, поэтому, возможно, по крайней мере, я могу просто переопределить это значение по умолчанию в Django admin (я имею в ModelAdmin форму ModelAdmin для класса B ).

3 Solutions collect form web for “изменить значение формы администратора admin”

Как вы полагаете, я считаю, что самый простой способ – изменить форму модели, используемую для модели B в администраторе django.

Чтобы изменить начальное значение поля формы, вы можете переопределить это поле или переопределить метод __init__ .

 class BForm(forms.ModelForm): # either redefine the boolean field boolean_field = models.BooleanField(initial=False) class Meta: model = B # or override the __init__ method and set initial=False # this is a bit more complicated but less repetitive def __init__(self, *args, **kwargs): super(BForm, self).__init__(*args, **kwargs) self.fields['boolean_field'].initial = False 

Использование вашей пользовательской модели в администраторе django легко!

 class BAdmin(admin.ModelAdmin): form = BForm admin.site.register(B, BAdmin) 
 class A(models.Model): boolean_field = models.BooleanField(default=True) def __unicode__(self): return self. boolean_field class B(): some_other_field = models.CharField() default_fiel_from_bool = models.ForeignKey(A) 

Из этого ответа самый простой способ, который я нашел, – переопределить функцию get_changeform_initial_data.

Вот как я применил его к моему проекту.

В этом примере у меня есть класс ORM под названием Step и класс Admin под названием StepAdmin . Функция get_latest_step_order получает step_order от последнего объекта в таблице.

Переопределяя функцию get_changeform_initial_data в классе admin, я могу установить порядок шагов для каждого нового объекта, созданного на экране администратора.

 class Step(models.Model): step_name = models.CharField(max_length=200) step_status = models.ForeignKey(StepStatus, null=True) step_order = models.IntegerField() def get_latest_step_order(): return Step.objects.latest('step_order').step_order+1 class StepAdmin(admin.ModelAdmin): fields = ["step_name","step_status","step_order"] def get_changeform_initial_data(self, request): return { 'step_order': get_latest_step_order() } 
  • Администратор Django с периодическим возвратом 404
  • Django Admin с использованием RESTful API vs Database
  • DateTimeField не отображается в системе администратора
  • django-admin - как изменить ModelAdmin для одновременного создания нескольких объектов?
  • Django 1.9 Installation SyntaxError: недопустимый синтаксис
  • Как использовать пользовательский класс AdminSite?
  • Выпадающий список внешнего ключа Django admin с пользовательским значением
  • Как запустить клонированный проект Django?
  •  
    Interesting Posts for Van-Lav

    Суммирование значений массива numpy на основе индексов в другом массиве

    Как подать файл в webpy?

    Как я могу захватить параметр API в представлении Django?

    Использовать python для запуска сценария оболочки с помощью Popen ведет себя по-разному в командной строке python и в реальной программе

    Как вложенные функции работают в Python?

    Python – Как использовать регулярное выражение в файле, строка за строкой, в Python

    Python decimal.Decimal id не то же самое

    Включить выполнение нескольких операторов во время выполнения через sqlalchemy

    Python, записывать в zip-файл в файл

    Как построить многослойный суставный сундук в подзаголовке

    Почему эта программа Haskell намного медленнее, чем эквивалентная Python?

    Автоматизация Python Win32Gui – отправьте WM_COPYDATA для получения данных из BSPlayer

    Python: urllib / urllib2 / httplib путаница

    Как я могу запретить сам модуль Python импортировать?

    Как проверить, находится ли вход в двоичном формате (1 и 0)?

    Python - лучший язык программирования в мире.