Ну, при создании пользовательского образцового поля только для изменения это - виджет формы по умолчанию, не действительно очевидное место для запуска.
можно сделать собственный виджет формы и переопределить поле в форме, определив собственный виджет как в ответе Soviut.
существует также более короткий путь:
class ArticleForm(ModelForm):
pub_date = DateField(widget=MyDateWidget())
class Meta:
model = Article
существует пример того, как записать виджеты формы, это находится где-нибудь в пакете форм Django. Это - datepicker с 3, выпадает.
, Что я обычно делаю, когда я просто хочу добавить, некоторый JavaScript к стандартному элементу ввода HTML является отпуском это способ, которым это, и измените его путем ссылки, это - идентификатор позже с JavaScript. Можно легко поймать соглашение о присвоении имен для идентификаторов полей ввода, которые генерирует Django.
можно также просто обеспечить класс для виджета при переопределении его в форме. Тогда поймайте их всех с jQuery именем класса.
Чтобы ответить на заглавный вопрос. Да, это избыточно, но нужно ли это делать, зависит от вашей ситуации.
Если у вас нет известных проблем с производительностью, подсчитывайте подсчеты и итоги на лету в своем приложении и не сохраняйте их. То есть не храните вычисленные значения, если у вас нет другого выбора.
В большинстве ситуаций вам не придется прибегать к этому и не следует.
Если вы должны сохранить вычисленные значения, сделайте следующее:
While it depends on the size of your database, these are the kinds of operations that databases specialize in, so they should be fast. It's probably a case of premature optimization here - you should start by not storing the totals, thus making it simpler - and optimize later if necessary.
Запомните изречение «Человек с одними часами всегда знает время. Человек с двумя часами никогда не уверен». Я бы сохранил производное число только в том случае, если:
Проблемы с производительностью не позволяют вам получить производные числа, когда они вам нужны (что не должно быть проблемой в этом случае, поскольку ответ, вероятно, будет доступен из индексов)
или
У вас есть основания полагать, что вы теряете записи из основной таблицы из-за ошибки программиста или преднамеренного или случайного действия пользователя. В этом случае вы можете использовать полученное число для проверки текущего вычисляемого числа.
Ответы Peter и JohnFx верны, вы предлагаете денормализацию вашей базы данных схемы, которая может улучшить производительность чтения, но в ущерб записи, дополнительно возлагая на разработчика (или дополнительных умников СУБД) ответственность за предотвращение несоответствий в вашем наборе данных.
ActiveRecord имеет некоторые встроенные функции для автоматического управления счетчиками на has_many
отношения. Посмотрите этот Railscast на счетчиках .
Знаете ли вы, что простой флаг творит чудеса ActiveRecord?
class ThingOwner
# it has a column like
# t.integer things_count, :default => 0
has_many :things, :counter_cache => true
end
Что касается вопроса - да, конечно, он избыточен, я бы добавил такой счетчик, если и только if things.count
доля времени слишком велика.
В противном случае это преждевременная оптимизация.