Определить отношение ManyToMany в другом приложении в Django
У меня есть приложения "Пользователи" и "Проекты", и я хотел бы определить другое приложение под названием "Роли" для расширения django-auth для каждого проекта.
Я определил ProjectMembership в приложении Roles как пользовательскую модель отношений ManyToMany. Но как я могу определить поле M2M в модели пользователя или проекта с through
декларация?
Итак, вопрос в том, можем ли мы определить поле модели из другого приложения?
2 ответа
Я не думаю, что это возможно, и даже если это возможно, то, на мой взгляд, это очень плохое решение.
Я думаю, что ваш лучший вариант - создать модель ProjectMembership с двумя FK, один для пользователя и один для проекта. Тогда у вас есть отношение M2M вручную, и вы не можете использовать все приятные функции Django для работы с отношениями M2M.
Однако если вам нужны эти функции (они не нужны), вам следует изменить либо модель "Пользователь", либо модель проекта.
Да, вы можете, Django автоматически создаст для вас обратную связь. использование related_name
дать ему имя!
Модификация (исправление денег) User
модель не очень хорошая идея Если вы хотите расширить его, сделайте это либо через:
- наследование
- объект профиля (который рекомендован django).