Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
- class User(AbstractBaseUser):
- email = models.EmailField(
- verbose_name='email address',
- max_length=255,
- unique=True,
- )
- date_of_birth = models.DateField(null=True)
- is_active = models.BooleanField(default=True)
- is_admin = models.BooleanField(default=False)
- is_teacher = models.BooleanField(default=False)
- is_student = models.BooleanField(default=False)
- is_parent = models.BooleanField(default=False)
- in_class= models.BooleanField(default=False)
- bio = models.TextField(blank=True, help_text='write something about
- yourself...')
- # goes on...
- from django.db import models
- from accounts.models import User
- from django.db.models.signals import post_save, pre_save
- from django.dispatch import receiver
- class GroupOfStudents(models.Model):
- teacher = models.ForeignKey(User,on_delete=models.CASCADE)
- students = models.ManyToManyField(User, related_name='students')
- def __str__(self):
- return "Class of Teacher {}".format(self.teacher.first_name)
- @receiver(post_save, sender=GroupOfStudents)
- def change_teacher_inclass(sender, instance, created, **kwargs):
- if created:
- teacher = instance.teacher
- teacher.in_class=True
- teacher.save()
- @receiver(post_save, sender=GroupOfStudents)
- def change_student_inclass(sender, instance, created, **kargs):
- if created:
- for student in instance.students.all():
- student.in_class=True
- student.save()
- >>> from accounts.models import User
- >>> from klass.models import GroupOfStudents
- >>> g = GroupOfStudents.objects.all()
- >>> first_obj = g[0]
- >>> first_obj
- <GroupOfStudents: Class of Teacher teacher>
- >>> for user in User.objects.filter(is_student=True):
- ... if user in first_obj.students.all():
- ... user.in_class = True
- ... user.save()
- If usere.email == student.email:
- #same stuff of inclass....
Add Comment
Please, Sign In to add comment