Комментарии 35
Я вот сильно жду newforms-admin и надеюсь что тогда можно будет спокойно в админку добавлять свои кастомные элементы форм.
А я уже давно использую newforms-admin.
SVN: http://code.djangoproject.com/svn/django/branches/newforms-admin
Скоро запускаю рискованный проект на этой ветке :-)
FAQ от Llama, который знает newforms-admin очень хорошо: http://code.djangoproject.com/wiki/NewformsHOWTO
Так же вы можете его найти на официальном irc-канале #django в сети FreeNode :)
SVN: http://code.djangoproject.com/svn/django/branches/newforms-admin
Скоро запускаю рискованный проект на этой ветке :-)
FAQ от Llama, который знает newforms-admin очень хорошо: http://code.djangoproject.com/wiki/NewformsHOWTO
Так же вы можете его найти на официальном irc-канале #django в сети FreeNode :)
Спасибо. Только ошибки/опечатки поправьте, пожалуйста.
Такое впечатление, что документацию к Django newforms автор не читал.
> class SelectFromModel(forms.Field):
Круто написал, все ок. Только есть ChoiceField.
> class TagField(forms.CharField):
Подобный clean - это уровень приложения, а никак не формы.
> class SelectFromModel(forms.Field):
Круто написал, все ок. Только есть ChoiceField.
> class TagField(forms.CharField):
Подобный clean - это уровень приложения, а никак не формы.
Не нравится что наследую от Field? Это только для гибкости, не более. Потому как от подобного (select) ввода собираюсь отказаться. Но по сути, я его и реализовал (и помню, даже пробовал ChoiceField).
На счёт TagField, сложный вопрос. Мне понадобится ещё как минимум 10 таких полей на весь сайт впихнуть. Всёравно придётся выносить код в отдельный метод, а в поле он как-то в тему получается.
На счёт TagField, сложный вопрос. Мне понадобится ещё как минимум 10 таких полей на весь сайт впихнуть. Всёравно придётся выносить код в отдельный метод, а в поле он как-то в тему получается.
1. Никакой гибкостью в отличии от использования того же ChoiceField там, на самом деле, и не пахнет. ;)
2. Ну, куда писать код - это тебе решать. Но для начала советую все же перечитать доку джанговскую. А насчет clean - "Each Field in a Form class is responsible not only for validating data, but also for “cleaning” it — normalizing it to a consistent format".
2. Ну, куда писать код - это тебе решать. Но для начала советую все же перечитать доку джанговскую. А насчет clean - "Each Field in a Form class is responsible not only for validating data, but also for “cleaning” it — normalizing it to a consistent format".
Т.е. clean - это НЕ обработчик значения поля, этим в джанге view'ы занимаются. Так что советую задуматься.
1. Ну мб :) Почему-то решил не завязываться на Choice, вот хз почему)
2. Как раз для normalizing it to a consistent format и делаю clean. Т.е. строка -> Набор значений. Опять же, в Django есть поле выполняющее подобную функцию, если мне не изменяет память
P.S> Вообще, я это делал достаточно давно и причины, по которым я сделал некоторые вещи, не совсем помню.
2. Как раз для normalizing it to a consistent format и делаю clean. Т.е. строка -> Набор значений. Опять же, в Django есть поле выполняющее подобную функцию, если мне не изменяет память
P.S> Вообще, я это делал достаточно давно и причины, по которым я сделал некоторые вещи, не совсем помню.
Я не уверен, но мб претензии к тому, что я зря вообще писал загрузку данных и это всё уже есть в ChoiceField? Я рыл сырцы, но ничего не нашёл.
2. Угу, и добавление в таблицу - тоже нормализация? :)
Да.Один хрен их добавлять придётся. DRY, бля
try:
dbtag = Tag.objects.get(title=tag)
except:
dbtag = Tag(title=tag)
dbtag.save()
Написать эти 4 строки несколько раз - это лучше, чем перековеркивать смысл работы приложения. ;)
PS. А вообще - можно в функцию это оформить.
dbtag = Tag.objects.get(title=tag)
except:
dbtag = Tag(title=tag)
dbtag.save()
Написать эти 4 строки несколько раз - это лучше, чем перековеркивать смысл работы приложения. ;)
PS. А вообще - можно в функцию это оформить.
Ничем не лучше функции, пусть уж логика привязанная к конкретному полю будет в самом поле.
И считаю, для простоты дальнейшей работы приемлемо коверкать смысл :)
И считаю, для простоты дальнейшей работы приемлемо коверкать смысл :)
Эх...
Учишь вас, учишь. А потом сидишь и материшься, когда приходится код дописывать. :(
1. Читай про MVC
2. Форма не должна менять модель, понятно почему? :)
3. Твой пример пишется в одну строку, так что ни в какую функцию его выносить не нужно:
Tag.objects.get_or_create(title=tag)
Учишь вас, учишь. А потом сидишь и материшься, когда приходится код дописывать. :(
1. Читай про MVC
2. Форма не должна менять модель, понятно почему? :)
3. Твой пример пишется в одну строку, так что ни в какую функцию его выносить не нужно:
Tag.objects.get_or_create(title=tag)
1. Читал, видел, делал
2. Не соглашусь! Вот виджет, да, это View, а Field это контроллер всяко разно!
3. Да, это я знаю. Старая привычка делать через исключения :) Сейчас уже исправляюсь. Но всё же функциональность не только в добавлении тега (тем более одного) в БД, там ещё разделение тегов, например.
2. Не соглашусь! Вот виджет, да, это View, а Field это контроллер всяко разно!
3. Да, это я знаю. Старая привычка делать через исключения :) Сейчас уже исправляюсь. Но всё же функциональность не только в добавлении тега (тем более одного) в БД, там ещё разделение тегов, например.
3 Поправил и + в карму. :) Пусть всёже, кому надо учатся правильно делать.
А еще можно написать вот так :)
Если есть такой тэг, newTag будет ссылкой на него, а created — False.
Если нет, то такой тэг создастся, newTag будет ссылкой на него, а created — True.
Уже одна строка :)
newTag, created = Tag.objects.get_or_create(title=tag)
Если есть такой тэг, newTag будет ссылкой на него, а created — False.
Если нет, то такой тэг создастся, newTag будет ссылкой на него, а created — True.
Уже одна строка :)
А почему для тэгов не воспользоваться готовым http://code.google.com/p/django-tagging/…
И по поводу категории я не понял, почему не воспользоваться models.ForeignKey ? Там же уже реализован и Select и валидация.
И по поводу категории я не понял, почему не воспользоваться models.ForeignKey ? Там же уже реализован и Select и валидация.
Ждем продолжения :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
django.newforms: Используем.