I have a User model and a Teacher model as below User model must be created first and Teacher model is created with User as an object (ForeignKey).
User Model
class User(AbstractUser):
'''
Class to store details of Users
Attribs:
username (str):User name.
role_options (str): Options for role
role (str):Whether "Admin" or "Teacher".
email (str):User email id.
parent_id (obj):Self foreign key field to store creator id.
staff (bool):If Staff
admin (bool):If admin
'''
username=models.CharField(
max_length=100,default="Unknown",null=True,blank=True)
role_options = [
('Admin','Admin'),
('Teacher','Teacher'),
('Student','Student')
]
role = models.CharField(
choices=role_options,max_length=40,
null=True,blank=True)
email=models.EmailField(max_length=100,unique=True)
parent_id = models.ForeignKey(
'self',related_name="parent_admin",
on_delete=SET_NULL,null=True,blank=True)
staff = models.BooleanField(default=False,null=True)
admin = models.BooleanField(default=False,null=True)
USERNAME_FIELD='email'
REQUIRED_FIELDS=[]
objects=UserManager()
def get_username(self):
return self.email
@property
def is_staff(self):
return self.staff
@property
def is_admin(self):
return self.admin
Teacher Model
class Teacher(models.Model):
"""
Class to store Teacher details.
Attribs:
fullname (str): Fullname of Teacher.
email (Obj): Email Id of Teacher
address (str): Address of Teacher
joining_date (str): School joining date
qualification (str): Qualification of Teacher
"""
fullname=models.CharField(max_length=100,null=True,blank=True)
email=models.OneToOneField(
User,related_name="Teacher",on_delete=CASCADE,null=True,blank=True)
address = models.CharField(
max_length=200,default="Unknown",null=True,blank=True)
joining_date = models.DateField(
null=True,default=timezone.now,blank=True)
qualification = models.CharField(max_length=40,null=True,blank=True)
I have created a serializer for creating User as given below
class UserSerializer(serializers.ModelSerializer):
"""Serializer for creating user."""
class Meta:
model = User
fields = [
'id',
'email',
'password',
'role'
]
I want to create a User and use it's instance to create a Teacher, simultaneously from the same serializer. How can i do that?
My api view is given below
class TeacherCreate(CreateAPIView):
""" View for Creating Teacher """
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated,AdminOnly]
serializer_class = TeacherCreateSerilaizer