You can use create user group on the django admin *AJAYI Sunday * (+234) 806 771 5394 *[email protected] <[email protected]>*
On Sun, Apr 26, 2020 at 8:05 PM Mayank Tripathi <[email protected]> wrote: > I'm making a small test project with below user types: School Admin, > Teacher, Student, Parent. And each user type will have different > Permissions like School Admin has full access... Parents can only view > their Childern's Activity. Teacher can see all students but can add / edit > marks for their respective students only. Teachers can setup Exam etc.. > Students can take exam and submit the exam, but cannot edit / add any other > information. Just can edit his profile detail. > > Approach 1: Do i need to create a Custom User calss and apply to each user > type (ie one Custome Class.. and 4 user type calss).. and similarly have 4 > different view and html pages? > > Approach 2: Just have one custome class and have an field with UserType > which will have the have as "SchoolAdmin", "Teacher", "Student","Parent".. > and one view and html (as the data page would remain same and only data > record will restrict), and somehow identify the User Type in View, and > filter the record? > > Definately some view or html pages will be specific to one user type only > which is i am able to handle, the issue is to use same view / html page to > handle all user type. > > Please suggest... and any code snippet will will more helpful. > > > Below is the thing from approach 1, i was trying. > > # models.py---------------------class CustomUser(AbstractUser): > USER_TYPE_CHOICES = ( > ('SchoolAdmin'), > ('Teacher'), > ('Student'), > ('Parents'), > ) > > user_type = models.CharField(blank=False, choices=USER_TYPE_CHOICES) > name = models.CharField(blank=False, max_length=255) > country = models.CharField(blank=False, max_length=255) > city = models.CharField(blank=False, max_length=255) > phone = models.CharField(blank=True, max_length=255) > created_at = models.DateField(auto_now_add=True) > > def __str__(self): > return self.name > > class SchoolAdmin(models.Model): > user = models.OneToOneField( > CustomUser, on_delete=models.CASCADE, primary_key=True) > > class Teacher(models.Model): > user = models.OneToOneField( > CustomUser, on_delete=models.CASCADE, primary_key=True) > photo = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True) > > class Student(models.Model): > user = models.OneToOneField( > CustomUser, on_delete=models.CASCADE, primary_key=True) > teacher = models.ForeignKey(Teacher) > photo = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True) > class Parent(models.Model): > user = models.OneToOneField( > CustomUser, on_delete=models.CASCADE, primary_key=True) > student= models.ForeignKey(Student) > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/dbc99b6e-3d46-41c4-a5a9-1e85bbf7d8a4%40googlegroups.com > <https://groups.google.com/d/msgid/django-users/dbc99b6e-3d46-41c4-a5a9-1e85bbf7d8a4%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAKYSAw3ucCKdYsctEMBtMBY9G0Na%2BzQiHKRzJ9w-%3D7RZ6ZGh3A%40mail.gmail.com.

