Простой ответ: вы наследуете от классов форм, создаете свои собственные модификации и используете свою модифицированную версию.
Таким образом, вместо импорта из taggit, вы импортировали бы из своего собственного forms.py
Я делал это много раз, когда хочу украсить / улучшить функциональность существующего приложения.Недостатком является то, что если документация оставляет желать лучшего, вам нужно покопаться в источнике, чтобы узнать, что такое стек вызовов и дерево наследования для функциональности, которую вы хотите изменить.
Недостатком этого подхода является то, что выне может изменить поведение добавленного приложения.Поэтому, если вы хотите, чтобы некоторые внутренние функции taggit использовали ваш собственный код - это сложно реализовать.Однако это очень редкий случай.
Если вы действительно хотите сделать это (как я должен был сделать один раз), вы можете клонировать источник и сохранить свою собственную копию.Создайте ветку с вашими модификациями и убедитесь, что вы пишете хорошие тесты.
Затем вы должны добавить этот код в ваш проект django как его собственное приложение;из-за правил поиска Python - он найдет вашу локальную копию и будет использовать ее вместо той, что находится в глобальном каталоге site-packages.
Если апстрим обновлен, ваша задача - сохранить вашу копию, убедившись, чтотесты не терпят неудачу, когда вы обновляете / перебазируете.