У меня есть две модели:
class Group(models.Model):
name = models.CharField(max_length=50, null=False, blank=False)
class User(models.Model):
username = models.CharField(max_length=50, null=False, blank=False)
password = models.CharField(max_length=50, null=False, blank=False)
group = models.ForeignKey(Group, null=False, on_delete=models.CASCADE)
И у меня есть сериализаторы для них обоих:
class GroupSerializer(serializers.Serializer):
name = serializers.CharField()
class UserSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
group = serializers.PrimaryKeyRelatedField(queryset=Group.objects.all())
Затем в представлении регистрации я пытаюсь автоматически создать группу когда пользователь регистрирует свою учетную запись:
@api_view(['POST'])
def registration(request):
# Creates a new group
g_serializer = GroupSerializer(data=request.data, partial=True)
g_serializer.is_valid(raise_exception=True)
group = g_serializer.save()
# Creates a new user
u_serializer = UserSerializer(data=request.data, partial=True)
u_serializer.is_valid(raise_exception=True)
user = u_serializer.save()
Как вы можете себе представить, ошибка, которую я получаю, заключается в том, что поле group
для класса User нарушает ненулевое ограничение. Я попытался исправить это, выполнив u_serializer['group'] = group.id
или u_serializer['group'] = group
, но он выдает следующую ошибку:
TypeError: 'UserSerializer' object does not support item assignment
Как я могу справиться с этим? Новый объект Group правильно создается и вставляется в базу данных, и мне нужно назначить этот объект для user.group.