У меня есть две модели: Пользователь и Компания: -
class User(AbstractUser):
id = models.UUIDField(
primary_key=True, default=uuid.uuid4, editable=False
)
objects = UserManager()
и
class CompanyModel(basemodel.BaseModel):
name = models.CharField(max_length=30, null=False, blank=False)
user = models.ForeignKey(User, on_delete=models.CASCADE, default='', related_name='owner')
...
Теперь, создавая только пользователя, я хочу спросить название компании и создать компанию в только на этот раз
Вот мой сериализатор:
class CreateUserSerializer(serializers.ModelSerializer):
email = serializers.EmailField()
company = serializers.RelatedField(queryset=CompanyModel.objects.all())
password = serializers.CharField(write_only=True, )
def validate_email(self, email):
if FederatedIdentityModel.objects.filter(email__iexact=email).exists():
raise APIException(
detail="Email id already exists!",
code=status.HTTP_409_CONFLICT
)
return email.lower()
def validate_company(self, company):
if CompanyModel.objects.filter(name__iexact=company).exists():
raise APIException(
detail="Company already exists!",
code=status.HTTP_409_CONFLICT
)
return company.lower()
def create(self, validated_data):
try:
with transaction.atomic():
user = User.objects.create(**validated_data)
user_profile = UserProfileModel.objects.create(user=user)
user_profile.__dict__.update(**validated_data)
user_profile.save()
company_profile = CompanyModel.objects.create(user=user, name=self.company)
company_profile.__dict__.update(**validated_data)
company_profile.save()
return user
except APIException:
raise APIException(
detail="Failed to register",
code=status.HTTP_500_INTERNAL_SERVER_ERROR
)
class Meta:
model = User
fields = ['first_name', 'last_name', 'password', 'username', 'email', 'company']
Но на сервере поле компании отображается как раскрывающееся поле. Как я могу написать поле своей компании, чтобы создать пользователя и компанию одновременно