Как сделать приложение Django подключаемым?
-
03-07-2019 - |
Вопрос
Скажем, например, у меня есть приложение для ведения блога, которое я хочу иметь возможность добавлять в разные проекты, но я всегда хочу, чтобы Блог был связан с какой-то другой моделью.Например, в одном случае я могу захотеть, чтобы он был связан с пользователем:
site.com/someuser/blog
Но на другом сайте я хочу, чтобы это было связано, скажем, со школой:
site.com/someschool/blog
Есть ли способ сделать приложение Blog подключаемым, чтобы не было необходимости переопределять модель (добавляя поле внешнего ключа) всякий раз, когда я добавляю его в проект?
Решение
Возможно, вы захотите заглянуть в ContentTypes framework, я использовал его для создания приложения комментариев, которое можно использовать для комментирования любой модели в базе данных (по разным причинам я не хотел использовать стандартное приложение комментариев django).
http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
Другие советы
Есть несколько важных деталей, позволяющих убедиться, что приложение можно использовать повторно, и я думаю, что лучше всего дать ссылку на два наиболее важных набора документации по этой теме:
Общие отношения разрешить вам иметь внешний ключ к любой другой модели.Однако из вашего вопроса неясно, к какому типу объекта вы хотите привязать внешний ключ.Я подозреваю, что связь с внешним ключом на самом деле не является универсальной - вы просто не заметили другую часть своей системы, которая также могла бы быть приложением многократного использования.