首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django:布局注意事项

django:布局注意事项
EN

Stack Overflow用户
提问于 2011-10-26 16:03:16
回答 2查看 265关注 0票数 0

我有以下设计考虑:

  • I有4组用户--学生、家长、教师和管理员。学生、家长、教师共享相同的关系信息--班级、家长-孩子、教师--等等。教师有一个“门户”,通过这个门户,教师可以执行一些只对教师可见的任务,还可以发布一些分发给其他类型users.
  • Similarly,的信息,家长和学生可以登录查看共享的信息,但也可能有自己特有的特性,only.
  • Administrators添加/编辑了新用户,更改了学生类等。并且可以使门户范围内的每个“门户”announcements.
  • Prensentation布局类似于

目前,我想到了以下几点

  • apps
  • urls,etc

    • 教师

代码语言:javascript
复制
- parents 
    - apps
    - urls,etc

代码语言:javascript
复制
- common\_apps
- administrators (Django-admin site)

teachersparentsadministrators是独立的django项目。普通的应用程序包含所有类型的用户共享的信息。teachers.apps的应用程序可能对common_apps中的应用程序起作用。Administrator基本上是一个管理站点。

这种结构是否符合上述要求?权限是否会成为此布局的问题?请让我参考你的经验,并提出一些建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-26 21:02:16

只创建一个应用程序,并为StudentParentTeacher使用代理模型,每个代理模型都是从User继承的。创建并使用组来区分它们,例如,学生将是属于“学生”组的User

代码语言:javascript
复制
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

ParentTeacher冲洗并重复。

使用信号自动设置组:

代码语言:javascript
复制
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)

冲洗并重复ParentTeacher

现在,创建一个用户配置文件模型:

代码语言:javascript
复制
class UserProfile(models.Model):
    user = models.OneToOneField(User)
    # Other data

在settings.py中:

代码语言:javascript
复制
AUTH_PROFILE_MODULE = 'yourapp.UserProfile'

这将为您提供您所需的所有基础设施。您可以继续使用附加功能扩展StudentParentTeacher模型。您只是不能向它们添加新字段;所有其他字段都应该放在UserProfile上。

管理员和只有管理员才能访问Django管理(User.is_staff=True)。从那里,他们可以做所有必要的管理。你应该建立一个面向学生、教师和家长的前端系统。

票数 0
EN

Stack Overflow用户

发布于 2011-10-26 16:43:40

我觉得你的应用程序结构有点混乱。在我看来,您可以使用类似于:

  • 只有一个django项目。如果这将是一个独特的门户,那么您应该将所有应用合并到一个django project.
  • Create中,这个项目中的所有应用程序都是: subjects,时间表。
  • 为家长、学生和教师扩展了用户模型。您可以使用组和权限来处理每个组的信息。

此结构还允许您对所有部分具有相同的“布局”。

查看django文档中的用户模型和概要文件,它将帮助您。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7905454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档