我有以下设计考虑:
。
目前,我想到了以下几点
- parents
- apps
- urls,etc
- common\_apps
- administrators (Django-admin site)
teachers、parents和administrators是独立的django项目。普通的应用程序包含所有类型的用户共享的信息。teachers.apps的应用程序可能对common_apps中的应用程序起作用。Administrator基本上是一个管理站点。
这种结构是否符合上述要求?权限是否会成为此布局的问题?请让我参考你的经验,并提出一些建议。
发布于 2011-10-26 21:02:16
只创建一个应用程序,并为Student、Parent和Teacher使用代理模型,每个代理模型都是从User继承的。创建并使用组来区分它们,例如,学生将是属于“学生”组的User。
class StudentManager(models.Manager):
def get_query_set(self, *args, **kwargs):
qs = super(StudentManager, self).get_query_set(*args, **kwargs)
return qs.filter(groups__name='Student')
class Student(User):
objects = StudentManager()
class Meta:
proxy = True用Parent和Teacher冲洗并重复。
使用信号自动设置组:
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Student)
def set_student_group(sender, instance, created, **kwargs):
if created:
group, c = Group.objects.get_or_create(name='Student')
instance.groups.add(group)冲洗并重复Parent和Teacher。
现在,创建一个用户配置文件模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
# Other data在settings.py中:
AUTH_PROFILE_MODULE = 'yourapp.UserProfile'这将为您提供您所需的所有基础设施。您可以继续使用附加功能扩展Student、Parent和Teacher模型。您只是不能向它们添加新字段;所有其他字段都应该放在UserProfile上。
管理员和只有管理员才能访问Django管理(User.is_staff=True)。从那里,他们可以做所有必要的管理。你应该建立一个面向学生、教师和家长的前端系统。
发布于 2011-10-26 16:43:40
我觉得你的应用程序结构有点混乱。在我看来,您可以使用类似于:
此结构还允许您对所有部分具有相同的“布局”。
查看django文档中的用户模型和概要文件,它将帮助您。
祝好运!
https://stackoverflow.com/questions/7905454
复制相似问题