Situation
I am creating a simple endpoint that allows for the creation of a user. I need a field that is not in my user model (i.e., confirm_p
Also useful for nested serializer implementation representing models, when the root model doesn't have directly access to fields you want to use. Thank you @vyscond ;) Fyi here is my case:
models.py
class Company(models.Model):
permission_classes = (
IsCompanyMember,
)
name = models.CharField(
unique=True,
max_length=100,
verbose_name='company name',
null=False
)
class Profile(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
is_company_admin = models.BooleanField(default=False, null=False)
is_email_validated = models.BooleanField(default=False, null=False)
is_approved_by_company_admin = models.BooleanField(default=False, null=False)
serializer.py
class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ('name',)
class CustomUserRegistrationSerializer(serializers.ModelSerializer):
password = serializers.CharField(style={'input_type': 'password'},
write_only=True,
validators=settings.get('PASSWORD_VALIDATORS'))
company = CompanySerializer(allow_null=False, required=True,write_only=True)
class Meta:
model = User
fields = ('username',
'email',
'password',
'company',
'first_name',
'last_name')