Вы можете сделать это, управляя шириной 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, если вы этого желаете.
Давайте рассмотрим довольно обычный пример этого процесса. Мы хотим зарегистрировать нового пользователя, а также создали модель профиля, в которой мы хотим, чтобы профиль пользователя сохранялся только при сохранении действительной информации о пользователе.
Мы можем создать нового пользователя в админке Django и использовать метод saved_model
в ModelAdmin
, чтобы сохранить другие части формы в модели Profile
. Это «нормальный» способ сделать это. Но, используя этот способ, вы можете получить доступ к пользователю и профилю только из панели администратора Django. Форма «Регистрация пользователя» за пределами Администратора Django не будет работать , поскольку для доступа к элементам управления Администратора Django необходимо будет зарегистрироваться.
Но с помощью сигнала post_save
можно создать и обновить нового пользователя и профиль независимо от того, используете ли вы панель администратора Django или пользовательскую форму, которая сохраняется в моделях User
и Profile
.
Поэтому использование сигналов является наиболее гибким, но теперь вам нужно убедиться, что у вас есть способ проверки информации, поступающей из пользовательской формы.
Я думаю, вы поняли это правильно. И это может помочь вам понять разницу.
save_model
метод из ModelAdmin
вызывается, когда вы пытаетесь создать или обновить что-либо только из администратора django , но сигналы срабатывают независимо от места, где происходили действия. Это означает, что операции pre
или post
в методе save_model
не будут работать, если вы измените модель из-за пределов django admin , но сигналы будут работать для обоих извне административные представления и из ваших пользовательских блоков письменного кода.
Если возможно, я бы предпочел добавить сигналы вместо перезаписи save_model. Сигналы позволяют определенным отправителям уведомлять группу получателей о том, что какое-то действие имело место. Они особенно полезны, когда многие фрагменты кода могут интересоваться одними и теми же событиями. Также это похоже на управляемую событиями парадигму программирования . Это помогает сделать код организованным и чистым.