hello,
for your consideration.
i get this error:
app.Student.teacher: (models.E006) The field 'teacher' clashes with the field 'teacher' from model 'app.user'.
model.py
class User(AbstractUser):
class Role(models.TextChoices):
ADMIN = "ADMIN", "Admin"
STUDENT = "STUDENT", "Student"
TEACHER = "TEACHER", "Teacher"
base_role = Role.ADMIN
role = models.CharField(max_length=50, choices=Role.choices)
def save(self, *args, **kwargs):
if not self.pk:
self.role = self.base_role
return super().save(*args, **kwargs)
class TeacherManager(BaseUserManager):
def get_queryset(self, *args, **kwargs):
results = super().get_queryset(*args, **kwargs)
return results.filter(role=User.Role.TEACHER)
class StudentManager(BaseUserManager):
def get_queryset(self, *args, **kwargs):
results = super().get_queryset(*args, **kwargs)
return results.filter(role=User.Role.STUDENT)
class Teacher(User):
base_role = User.Role.TEACHER
teacher = TeacherManager()
name = models.CharField(max_length=200)
class Student(User):
base_role = User.Role.STUDENT
student = StudentManager()
teacher = models.ForeignKey(Teacher, max_length="50", on_delete=models.CASCADE)
name = models.CharField(max_length=200)
class Exercise(models.Model):
title = models.CharField(max_length=200)
teacher = models.ForeignKey(Teacher, max_length="50", on_delete=models.CASCADE)
def __str__(self):
return self.title
i find this quite interesting, since the class User doesn’t have any field ‘teacher’…?
tnx!
td