Вам не нужно создавать приложение для каждой модели. Приложение, как правило, представляет собой автономную, полезную сущность, которую вы отделяете от других приложений, если думаете, что будете использовать ее в другом проекте в будущем. В вашем случае вы могли бы просто иметь одно приложение с различными моделями (Голосование, Проект).
- Используйте стандартную пользовательскую модель Django, если вы не собираетесь расширять ее, но если ваш проект становится больше и появляются новые функции, вы можете по крайней мере создать свою собственную пользовательскую модель с подклассом AbstractUser, потому что потом ее сложно изменить на. Даже если вы просто определите
class User(AbstractUser):
pass
вы будете готовы к тому дню, когда захотите добавить поле в свою модель пользователя.
- Нет, у вас нет модели для каждого приложения, вы можете иметь несколько моделей для каждого приложения. Для создания отношений вы можете использовать
ForeignKey
и ManyToManyField
. Если модели тесно связаны друг с другом, они принадлежат одному приложению. Вы можете разделить вещи на отдельные приложения для обзора, но будьте осторожны с круговыми ссылками: вы не можете импортировать проект в модели голосования и голосовать в модели проекта.