Хобрук: Ваш путь к мастерству в программировании

Значение по умолчанию для поля в модели Django

Предположим, у меня есть модель:

class SomeModel(models.Model):
   id = models.AutoField(primary_key=True)
   a = models.IntegerField(max_length=10)
   b = models.CharField(max_length=7)

В настоящее время я использую администратора по умолчанию для создания/редактирования объектов этого типа. Как сделать так, чтобы поле «a» имело тот же номер, что и id? (по умолчанию=???)



Другой вопрос

Предположим, у меня есть модель:

   event_date = models.DateTimeField( null=True)
      year = models.IntegerField( null=True)
      month = models.CharField(max_length=50, null=True)
      day = models.IntegerField( null=True)

Как я могу установить поля года, месяца и дня по умолчанию такими же, как поле event_date?


Ответы:


1

Вы можете переопределить метод save(), и если a в этот момент все еще пусто/нуль, скопируйте поле id. То же самое касается вашего 2-го вопроса.

06.05.2010
  • каждый раз, когда я ставлю editable=False, значение не ставится. Поле должно быть видимым, чтобы его можно было изменить. есть ли способ скрыть поле и при этом изменить значение? 06.05.2010

  • 2

    ДОЛЖНО ли это быть полем, хранящимся в базе данных? (избыточность - это плохо, черт возьми)

    Если вы просто хотите вызвать его изнутри Python, используйте это:

    event_date = models.DateTimeField( null=True)
    
    @property
    def year(self):
        return self.event_date and self.event_date.strftime("%Y") or None
    
    06.05.2010
  • это работает. Спасибо! Также каждый раз, когда я устанавливаю editable=False, значение не ставится. Поле должно быть видимым, чтобы его можно было изменить. есть ли способ скрыть поле и при этом изменить значение? 06.05.2010
  • Новые материалы

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..