Django - Разница между администратором save_model () и сигналом post_save

Вы можете сделать это, управляя шириной div через css. Что-то грубо в этих строках:

<div id="container" style="width:100%; height:50px; border:1px solid black;">
  <div id="progress-bar" style="width:50%;/*change this width */
       background-image:url(someImage.png);
       height:45px;">
  </div>
</div>

Это значение ширины может быть отправлено с php, если вы этого желаете.

0
задан max 23 February 2019 в 16:21
поделиться

3 ответа

Давайте рассмотрим довольно обычный пример этого процесса. Мы хотим зарегистрировать нового пользователя, а также создали модель профиля, в которой мы хотим, чтобы профиль пользователя сохранялся только при сохранении действительной информации о пользователе.

Мы можем создать нового пользователя в админке Django и использовать метод saved_model в ModelAdmin, чтобы сохранить другие части формы в модели Profile. Это «нормальный» способ сделать это. Но, используя этот способ, вы можете получить доступ к пользователю и профилю только из панели администратора Django. Форма «Регистрация пользователя» за пределами Администратора Django не будет работать , поскольку для доступа к элементам управления Администратора Django необходимо будет зарегистрироваться.

Но с помощью сигнала post_save можно создать и обновить нового пользователя и профиль независимо от того, используете ли вы панель администратора Django или пользовательскую форму, которая сохраняется в моделях User и Profile.

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

0
ответ дан Afrowave 23 February 2019 в 16:21
поделиться

Я думаю, вы поняли это правильно. И это может помочь вам понять разницу.

save_model метод из ModelAdmin вызывается, когда вы пытаетесь создать или обновить что-либо только из администратора django , но сигналы срабатывают независимо от места, где происходили действия. Это означает, что операции pre или post в методе save_model не будут работать, если вы измените модель из-за пределов django admin , но сигналы будут работать для обоих извне административные представления и из ваших пользовательских блоков письменного кода.

0
ответ дан Davit Tovmasyan 23 February 2019 в 16:21
поделиться

Если возможно, я бы предпочел добавить сигналы вместо перезаписи save_model. Сигналы позволяют определенным отправителям уведомлять группу получателей о том, что какое-то действие имело место. Они особенно полезны, когда многие фрагменты кода могут интересоваться одними и теми же событиями. Также это похоже на управляемую событиями парадигму программирования . Это помогает сделать код организованным и чистым.

0
ответ дан Shakil 23 February 2019 в 16:21
поделиться
Другие вопросы по тегам:

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