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, я получаю следующее сообщение об ошибке.
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
при отправке полезной нагрузки