У меня есть две модели, связанные друг с другом, и я хочу автоматически создавать данные в ModelB после создания данных в ModelA.

У меня есть эта User Модель, которая пришла от пользователя Django Admin

class NewUser(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(_('email address'), unique=True)
    user_name = models.CharField(max_length=150, unique=True)
    first_name = models.CharField(max_length=150)
    start_date = models.DateTimeField(default=timezone.now)
    is_staff = models.BooleanField(default=True)
    is_superuser = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)

    objects = CustomAccountManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['user_name', 'first_name']

    def __str__(self):
        return str(self.id) + " " + self.email

И у меня есть другая модель, связанная с этой User моделью, называемая Promoter моделью

class Promoter(models.Model):
    user = models.ForeignKey(
        NewUser,
        on_delete=models.CASCADE,
    )

    def __str__(self):
        return str(self.user.id) + " " + self.user.email

    def email(self):
        return self.user.email

И каждый раз, когда я добавляю данные в User, я хочу автоматически добавлять также данные в модель Promoter со ссылкой на вновь созданную User

Вот мой код для добавления/регистрации нового пользователя

class RegisterView(APIView):
    permission_classes = [AllowAny]

    def post(self, request):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            newuser = serializer.save()
           

            if newuser:
                return Response(status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Я пытаюсь вручную добавить только что созданный User во фронт-энд, используя два разных вызова API для добавления пользователя и добавления промоутера, но получаю ошибку при добавлении данных промоутера вручную (1048, "Column 'user_id' cannot be null")

Я также пытаюсь добавить данные с помощью postman enter image description here

Ошибка для поля user, сохраненного без добавления пользовательского объекта внешнего ключа

вы можете передать объект пользователя в метод save() следующим образом...

def post(self, request):
    serializer = UserSerializer(data=request.data)
    if serializer.is_valid():
        newuser = serializer.save(user=request.user)
Вернуться на верх