Django как создать дочернюю запись с идентификатором родителя

Я пытаюсь связать таблицу счетов с таблицей пользователей, используя поле Foreigkey.

Внутри моей модели у меня есть класс Account.

class Account(models.Model):
  account_number = models.CharField(max_length=30)
  account_type = models.CharField(max_length=20)
  user = models.ForeignKey(User, related_name='accounts',
                         on_delete=models.CASCADE)

Ниже представлен мой serializers.py

class AccountSerializer(serializers.ModelSerializer):
  class Meta:
    model = Account
    fields = ('id', 'account_number',
              'account_type')

class UserSerializer(serializers.ModelSerializer):
  accounts = AccountSerializer(many=True) 
  class Meta:
    model = User
    fields = ('id', 'first_name', 'last_name',
              'email', 'password', 'accounts')
    extra_kwargs = {'password': {'write_only': True, 'required': True}}

В моем view.py я создал AccountViewSet

class AccountViewSet(viewsets.ModelViewSet):
  queryset = Account.objects.all()
  serializer_class = AccountSerializer

Я пытаюсь вставить учетную запись с идентификатором пользователя, используя Postman, я получаю следующее сообщение об ошибке.

enter image description here

django.db.utils.IntegrityError: null значение в столбце "user_id" отношения "app_account" нарушает ограничение not-null ПОДРОБНАЯ ИНФОРМАЦИЯ: Ошибочная строка содержит (7, 0187898789, Saving, null).

У меня уже есть запись пользователя с id 1 в базе данных, и в postman я передал user_id. Однако, когда я пытаюсь распечатать validated_data, он не показывает user_id

Добавьте user в раздел AccountSerializer.Meta.fields

class AccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = (
            'id',
            'account_number',
            'account_type',
            'user'
        )

и теперь, используйте user вместо user_id при отправке полезной нагрузки

Вернуться на верх