在django中对不同类型的同名用户进行身份验证?

时间:2017-12-06 16:27:44

标签: django django-rest-framework

我有一个老师和学生的模型。如果我创建了一个学生,并再次创建一个具有相同名称和电子邮件和东西的教师,它就会被创建..不能成为大学里同一个人的老师和学生。如何申请休息api?

1 个答案:

答案 0 :(得分:0)

根据您的要求和偏好,有几种方法可以解决这个问题。

一种方法是在数据库级别使用约束。在这种情况下,您必须为所有人创建模型,无论其状态如何,并添加区分学生和教师的其他布尔字段。这看起来像这样:

class People(models.Model):

    email = models.EmailField(unique=True)
    is_teacher = models.BooleanField()

unique表示电子邮件在整个表格中必须是唯一的,如果您尝试使用同一封电子邮件添加其他人,则会引发IntegrityError

还可以在unique_together这样的几个字段中使用唯一字符。

class People(models.Model):

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    class Meta:
        unique_together = (('first_name', 'last_name'),)

这意味着first_name和last_name必须是唯一的。

另一种方法是在使用filter()exists()保存之前检查学生或教师是否已经在一个或另一个表中。

teacher_exists = Teacher.objects.filter(teacher=something).exists()
student_exists = Teacher.objects.filter(student=something).exists()
如果QuerySet包含任何结果,则

exists()返回True,否则返回False。

相关问题