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