2009-07-17 1 views
1

Я нашел специальную модель поля (JSONField), которую хотел бы интегрировать в проект Django.Использование и установка пользовательских моделей полей Django

  • Где я могу поместить файл JSONField.py? - Будет ли он находиться в моем проекте Django, или я бы добавил его в нечто вроде:/django/db/models/fields/

  • Поскольку я предполагаю, что это можно сделать несколькими способами, повлияет ли это на то, как JSONField (или любое настраиваемое поле, если на то пошло) будет импортироваться в мой файл models.py?

ответ

1

Для первого вопроса я бы предпочел не помещать его в каталог django, потому что в случае обновлений вы можете потерять все свои изменения. Это общий момент: изменение внешней части кода приведет к увеличению затрат на обслуживание.
Поэтому я предлагаю вам разместить его в каком-либо месте, доступном из вашего pythonpath - это может быть модуль в вашем проекте или непосредственно внутри каталога сайтов-пакетов.

Как и во втором вопросе, просто «установка» не повлияет на ваши существующие модели.
Вы должны явно использовать его либо путем добавления его ко всем вашим моделям, которые в нем нуждаются, либо путем определения модели, которая его использует, и от кого все ваши модели наследуют.

+0

О, хорошо спасибо - и что касается моего второго вопроса, я просто хотел бы изменить местоположение файла, как я его импортирую? например: from xx import xx – KeyboardInterrupt

+0

Если вы поместите его в пакеты сайта, вы можете просто «импортировать JSONField» или «из JSONField import xxx», –

0

Лучше всего было бы сохранить Django и настройки отдельно. Вы можете поместить файл в любом месте на свой pythonpath.

2

Следует помнить, что Django - это просто Python, и поэтому одни и те же правила применяются к настройкам Django, как и для любой другой случайной библиотеки Python, которую вы можете загрузить. Чтобы использовать немного кода, он должен быть в модуле где-то на вашем Pythonpath, а затем вы можете просто до from foo import x.

У меня иногда есть каталог lib в моей структуре проекта Django, и в него вставляются всевозможные вещи, которые мне могут понадобиться импортировать. В этом случае я могу поместить код JSONField в модуль под названием fields, так как у меня могут быть другие настраиваемые поля.

Поскольку я знаю, что мой проект уже находится на Pythonpath, я могу просто сделать from lib.fields import JSONField, тогда я могу просто сделать myfield = JSONField(options) в определении модели.