3 回答
TA贡献1898条经验 获得超8个赞
这种问题我在不同的平台上问了很久。常见的答案是
如果你想重用它,然后创建一个应用程序,或者如果你不想,那么你不需要制作一个单独的应用程序
让我给你举个例子。如果您的项目具有以下功能
分享图片
分享文字
评论媒体和文字
赞成和反对选项
在这里,用户可以分享图像或文本,其他人可以对其进行评论或点赞/反对。在这种情况下,如果您将评论设置为单独的应用程序,并将 Upvote/Downvote 设置为单独的应用程序,那么将来如果您必须添加视频以及图像和文本,那么您只需将视频链接到评论应用程序和 Upvote/DOwnvote 应用程序,即与包含所有内容的大型应用程序相比,任务会更少。您也可以相应地管理您的数据库。
在您的情况下,您可以制作(例如),
自定义用户(帮助您将来添加额外权限)
产品类别(帮助您添加更多类别或子类别)
产品或销售等。
对于许多管理员来说,当您将这些应用程序添加到 settings.py 时,并且如果您在每个应用程序中分别编辑 admin.py,一切都会毫不费力地出现在您的管理面板中。
对于许多视图,您可以将所有模型导入任何应用程序的 views.py 或在其应用程序中单独使用它。它不会造成任何问题。urls.py 和 forms.py 等也是如此。
TA贡献1946条经验 获得超4个赞
为了您的解决方案,我会建议你创建多个应用程序,包含它自己的每个应用程序view.py,models.py和urls.py。您可以做的是,为用户创建一个单独的应用程序,其中将包含 User 模型(如果您决定覆盖 django 提供的现有用户模型)和所有与用户相关的视图(例如登录、注册等)。我建议您也为 Role 创建一个单独的模型,该模型将包含系统中的所有角色。每当您决定添加新角色时,发出一条管理命令,将在该表中添加角色。创建一个枚举类型类,如:
class Role(enum.Enum):
ADMIN = 1
USER= 2
labels = {
ADMIN: "Admin",
USER: "User"
}
所以Role表中的第一个条目将是 Adminpk=1等等。
这是一个关于如何创建模型并将事物分开的想法。您可以将user一个单独的应用程序关联到您sales应用程序中的一个表,因为这不会给您带来任何问题并保持代码可读和整洁。
TA贡献1802条经验 获得超10个赞
为了您自己的理智,请选择多个应用程序。
只需先将它们布置好,然后弄清楚应该在一个应用程序中合乎逻辑地组合在一起的内容以及应该放在下一个应用程序中的内容。
您想避免遇到循环导入!
跨应用程序的外键完全没有问题。基本上,只要您在模型中的任何位置使用 USER,您就会跨应用程序边界进行引用。
添加回答
举报