【发布时间】:2014-08-14 09:34:23
【问题描述】:
在我之前开发的每个 django 应用程序中,我只使用了一个应用程序,其中包含所有模型、表单等。 对于小型应用来说还可以,但现在是时候以正确的方式来做这件事了:)
我想要 auth 模块,该模块将涵盖用户注册、登录、欢迎电子邮件发送等内容。
所以...我创建了名为“auth”的应用程序。在 auth.models 模块中,我有这样的东西:
class BaseModel(models.Model):
uuid = UUIDField()
time_created = models.DateTimeField(auto_now_add=True, null=True)
time_modified = models.DateTimeField(auto_now=True, null=True)
class Meta:
abstract = True
class Team(BaseModel):
title = models.CharField(_('Team title'), max_length=64)
class Member(BaseModel):
user = models.OneToOneField(User)
team = models.ForeignKey(Team)
USER_ROLES = (
('admin',_('Administrator')),
('member',_('Team member')),
)
role = models.CharField(_('User role'), max_length=6, choices=USER_ROLES, default='member')
我的第一个麻烦来了。我的应用程序中的每个用户都将拥有一对一的 Member 对象。成员对象存储有关用户的一些附加数据。每个用户都必须分配到组(我称之为 Team)...但是等等...不应该将 Team 类移动到将管理 Teams 的单独应用程序???
另外,我喜欢从 BaseModel 继承所有模型类。我是否必须再次在每个应用程序中添加相同的 BaseModel 类? “不要重复自己”的规则不是打破规则吗?
另外,在注册新用户期间,我需要为他创建新团队。我应该把代码放在哪里?它与用户管理和团队管理有关。
我需要一些指导,如何解决这些设计问题。
【问题讨论】:
-
另外 - 如果您想讨论更多“开放式”Python/Django 问题,请随时访问Python chat。通常那里有人可以帮助您:)
标签: python django design-patterns django-models django-apps