Как я могу добавить изменяемое "подполе" к ModelField в django?
Я пытаюсь создать своего рода "подполе" для CharField в django, но я не уверен (а) возможно ли это вообще и (б) как добиться успеха, если это действительно возможно.
Допустим, мне нужна модель для Tools. Они будут иметь, например, поле для длинного_имени, короткого_имени, возможно, ForeignKey для реализации различных отделов. Один из этих инструментов я хотел бы сделать ссылкой, а упомянутое "подполе" - полем URLField с ссылкой на веб-страницу.
Теперь я могу создать несколько записей ссылок со связанным URL, но я бы предпочел иметь только один инструмент под названием "Ссылка" с прикрепленным изменяющимся URL. Является ли это случаем и для ForeignKey? Имеет ли смысл иметь модель только с одним полем (ну, двумя, если считать pkid) в ней?
Или я совсем сбился с пути? Любые рекомендации будут приняты с благодарностью.
Если я правильно вас понял, вы хотите иметь несколько ссылок, которые могут быть присоединены к модели Tool
, поэтому вместо одной URLField
у вас будет отношение "многие к одному" с моделью Link
:
class ToolLink(models.Model):
url = models.URLField(...
class Tool(models.Model):
links = models.ForeignKey(ToolLink, ...
Проблема в том, что вы хотите, чтобы только один конкретный инструмент мог хранить ссылки. Вы можете создать базовую модель 'Tool', которая затем будет иметь несколько различных типов инструментов, таких как 'StandardTool', 'LinkTool' и т.д. или установить некоторую логику, которая отслеживает, имеет ли инструмент ссылки или нет (или если другой инструмент уже имеет ссылки) и допустимо ли создание ссылок.