Использование и установка пользовательских полевых моделей Django - PullRequest
1 голос
/ 17 июля 2009

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

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

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

Ответы [ 3 ]

2 голосов
/ 17 июля 2009

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

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

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

1 голос
/ 17 июля 2009

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

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

0 голосов
/ 17 июля 2009

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

...