1. alTus

    17.06.2009

    0 ↑
    0 ↓
    Подскажите, где, с вашей точки зрения, лучше хранить (то есть в каких файлах) следующее:

    1) код для своих [custom] полей (ну тут я полагаю прямо в models, почти без вариантов)

    2) код для расширения админки. тут имею ввиду код, например, для кастомизации flatpages (добавление, скажем, tinymce). ведь файлы admin.py задаются для конкретного приложения и там положено хранить код, описывающий админ-часть именно этого конкретного приложения.
    и поэтому несколько некорректно держать в таком файле (хотя это работает) код наподобие этого:
    class TinyMCEFlatPageAdmin(FlatPageAdmin):
    def formfield_for_dbfield(self, db_field, **kwargs):
    if db_field.name == 'content':
    return forms.CharField(widget=TinyMCE(
    attrs={'cols': 80, 'rows': 30},
    ))
    return super(TinyMCEFlatPageAdmin, self).formfield_for_dbfield(db_field, **kwargs)

    admin.site.unregister(FlatPage)
    admin.site.register(FlatPage, TinyMCEFlatPageAdmin)
  2. Alex Slesarev

    18.06.2009

    0 ↑
    0 ↓
    Код для custom полей обычно хранится в fields.py, чтобы не плодить лишних зависимостей (не забывайте, что обычно при запуске сайта помимо импорта пакетов происходит импорт urlconf-ов, а они иногда импортируют модели).

    Общий код лично мы храним в "приложениях" common и/или utils.
  3. насчет второго: я создал бы отдельное приложение под эту фичу, что-нибудь вроде flatpages_tinymce
    мне кажется, что маленькие приложение - это хорошая практика
  4. alTus

    18.06.2009

    0 ↑
    0 ↓
    Насчет общих приложений - да - как-то позабыл об этом совсем, спасибо.


    А по поводу fields.py уточню:
    то есть просто рядом с моделями кладу этот файл и импортирую его в models.py? (тут не возникнет ли неприятностей при импорте моделей)
    тут ещё пришла в голову мысль - а если поле нужно для нескольких приложений - как лучше тогда?
  5. Иван Сагалаев

    18.06.2009

    0 ↑
    0 ↓

    Код для custom полей обычно хранится в fields.py, чтобы не плодить лишних зависимостей (не забывайте, что обычно при запуске сайта помимо импорта пакетов происходит импорт urlconf-ов, а они иногда импортируют модели).

    ... которые всё равно обязаны импортировать этот fields. Поэтому от зависимостей так не избавиться. ИМХО, уносить поля в fields.py имеет смысл, если там какое-то нетривиальное количество кода накапливается. Если это какая-нибудь обёртка из трёх строк над стандартным полем, то можно и в models.py оставить.

  6. Alex Slesarev

    18.06.2009

    0 ↑
    0 ↓
    Модели совершенно не обязательно импортировать fields.py.

    Обычно идет разделение:
    - models.py - модели
    - admins.py - все, что касается админки
    - forms.py - формы для админки и шаблонов
    - fields.py - поля для форм

    Если грамотно все писать, то models.py не будут импортировать ничего из вышеуказанного списка.

    Что касается общих полей, то тоже самое, что для любой другой общей функциональности - выносится в common или другое приложение, которое у вас будет. Модули - это ведь просто обычные файлы, совершенно не важно где их хранить. Конечно, надо учитывать требования Django для расположения некоторых модулей, но в данном случае (для общих полей) таких требований нет.
  7. Иван Сагалаев

    18.06.2009

    0 ↑
    0 ↓

    Мне показалось, что изначально речь шла о БД полях, а не о формовых, нет?

  8. alTus

    18.06.2009

    0 ↑
    0 ↓
    Да, именно о БД полях.
    Но, в принципе, я получил ответ на свои сомнения :)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.