Helpers - компьютеры, интернет, программирование

Переопределить значение модели django по умолчанию в форме по умолчанию?

У меня есть модель, которая выглядит примерно так:

class DooDad(models.Model):
    doo_dad_dogue = models.BooleanField(default=True)

Проблема в том, что по умолчанию нужно манипулировать... вещами, которые не имеют отношения к этому вопросу. Если бы я создавал форму, которая создает объект, решение было бы тривиальным. Однако я все еще использую форму django по умолчанию для создания этих вещей, и я бы предпочел оставить ее такой.

Я попробовал очевидное:

class DooDad(models.Model):
    doo_dad_dogue = models.BooleanField(default=True)

    def __init__(self, *args, **kwargs):
        super(DooDad, self).__init__(*args, **kwargs)
        self.doo_dad_dogue = False

...который, я подозреваю, будет иметь ужасные побочные эффекты, но с ним стоило поэкспериментировать. Форма по-прежнему появляется с установленным флажком.

РЕДАКТИРОВАТЬ: я должен был упомянуть, что это Django 1.9

Если невозможно продолжать использовать форму создания модели по умолчанию, есть ли что-то необычное, что мне нужно сделать, чтобы создать форму ModelForm, которая влияет только на CREATE, а не на EDIT?


Ответы:


1

Я не думаю, что использование модели __init__in является хорошей практикой. Однако, если вы хотите попробовать, важно знать, что ваш код неверен, поскольку поле doo_dad_dogue является дескриптором. Правильный способ получить к нему доступ — использовать self.fields['doo_dad_dogue'] = False.

Использование формы является правильным способом сделать это. Вы можете переопределить значение по умолчанию в форме с помощью метода init:

def __init__(self, *args, **kwargs):
    super(<YOUR_FORM>, self).__init__(*args, **kwargs)
    if args is not None and len(args) and args[0] is not None: 
        <MANIPULATE HERE>

Надеюсь, это поможет.

02.08.2017
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..