Как создать несколько типов пользователей в Django без использования форм
Я хочу создать 2 типа пользователей - Customer и Company, у обоих разные параметры. Я перерыл почти все, но все используют отношения полей OneToOne и используют формы django. Я новичок в django и просто хочу создать API, а не какой-нибудь HTML.
Это мои модели -
class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
name = models.CharField(max_length=100)
email = models.EmailField(_('email address'), unique=True)
class Company(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
company_name = models.CharField(max_length=100)
company_email = models.EmailField(_('email address'), unique=True)
Я создал сериализатор для моего пользовательского пользователя с именем UserSerializer и использовал его в сериализаторе моей модели.
class CustomerSerializer(serializers.ModelSerializer):
user = UserSerializer(many=True, read_only=True)
class Meta:
model = Customer
fields="__all__"
class CompanySerializer(serializers.ModelSerializer):
user = UserSerializer(many=True, read_only=True)
class Meta:
model = Company
fields="__all__"
Ниже приведен мой файл views.py для клиента -
class register(APIView):
def post(self, request, format=None):
user_serializer = UserSerializer(data=request.data)
if user_serializer.is_valid():
user = User.objects.create_user(email=request.POST.get('email'),
contact=request.POST.get('contact'),
is_staff=request.POST.get('is_staff'),
is_superuser=request.POST.get('is_superuser'))
customer_serializer = CustomerSerializer(data=request.data)
if customer_serializer.is_valid():
customer_serializer.save()
return Response(customer_serializer.data, status=status.HTTP_200_OK)
else:
return Response(customer_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else:
return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
В этом коде я получаю ошибку - "Column 'user_id' cannot be null".
user_id является внешним ключом в Customer, связанным с пользователями. Но при регистрации создается пользователь и ему присваивается случайный id. Я не могу указать идентификатор пользователя в поле ввода.