将Python / Django模型对象与用户

时间:2015-07-03 06:33:23

标签: python django django-models

我是Django和Python的新手,所以如果这是一个非常简单的问题我很抱歉。我正在为我的儿子小学建立一个申请表。该项目的第一站是为父母提供在线访问,以便与孩子的老师进行交流,反之亦然。我已经创建了下面显示的模型,这些模型将允许数据库中的关系,但我需要能够使教师和父母用户以及基于组角色的有限访问权限。以下是我的型号代码。

基本思想是教师和家长都与学生模型有很多关系。教师可以登录他们的门户并添加属于他们班级的学生。父母将与学生联系,然后学生将提供与教师的联系。现在作为用户,父母和老师可以来回发送通信。

如果这有任何意义,任何帮助或反馈都会很棒。哦,我知道我需要导入auth.models,但我不知道如何或者是否可以连接到老师和家长班。谢谢。

from django.db import models


class Student(models.Model):
    student_first = models.CharField(max_length=30)
    student_last = models.CharField(max_length=30)

    def __str__(self):
        return "%s %s" % (self.student_first, self.student_last)


class Teacher(models.Model):
    teacher_first = models.CharField(max_length=30)
    teacher_last = models.CharField(max_length=30)
    teacher_email = models.EmailField()
    students = models.ManyToManyField(Student)

    def __str__(self):
        return "%s %s" % (self.teacher_first, self.teacher_last)


class Parent(models.Model):
    parent_first = models.CharField(max_length=30)
    parent_last = models.CharField(max_length=30)
    parent_email = models.EmailField()
    students = models.ManyToManyField(Student)

    def __str__(self):
        return "%s %s" % (self.parent_first, self.parent_last)

1 个答案:

答案 0 :(得分:0)

由于教师和家长都有相同的字段,我会选择一个普通的模型。此外,两个都是用户,因此创建OneToOneFieldAUTH_USER_MODEL(提供名字和姓氏和电子邮件)。

class Profile(models.Model):
    '''
    Teacher or  Parent
    '''
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
    primary_key=True)

    students = models.ManyToManyField(Student)

只需在注册时将其分配给相应的家长/教师组,即可group限制访问权限。