Я пытаюсь создать объект User
, используя свой Staff
класс. Моя модель персонала выглядит следующим образом:
class Staff(models.Model):
organization = models.ForeignKey(
Organization, related_name='staff_organization', on_delete=models.CASCADE, blank=True)
user = models.OneToOneField(
User, on_delete=models.CASCADE, blank=True)
phone = models.CharField(max_length=15, blank=True)
def __str__(self):
return self.user.username
Мой класс сериализатора здесь,
# create staff serializer
class StaffSerializer(serializers.ModelSerializer):
class Meta:
model = Staff
fields = "__all__"
def create(self, validated_data):
username = validated_data.pop('username')
email = validated_data.pop('email')
password = validated_data.pop('password')
user_instance, created = User.objects.get_or_create(
username=username, email=email)
if not created:
user_instance.set_password(password)
staff_instance = Staff.objects.create(
**validate_data, user=user_instance)
return staff_instance
Класс Viewset,
class StaffViewSet(viewsets.ModelViewSet):
serializer_class = StaffSerializer
queryset = Staff.objects.all()
permission_classes = [permissions.IsAuthenticated]
def perform_create(self, serializer):
staff = serializer.save(organization=self.request.user.staff.organization)
return Response(serializer.data)
Я попробовал отправить запрос, как показано ниже ,
{"username":"tekson", "email":"tekson@gmail.com", "password":"admin"}
Но показывает ошибку
{
"user": [
"This field is required."
]
}
Я не знаю, как создать объект пользователя из персонала. Пожалуйста, помогите мне разобраться в этой ошибке.