Django Rest Framework: Получена `TypeError` при вызове `*.objects.create()` при установке авторизованного пользователя в качестве владельца команды
Я пытаюсь установить вошедшего в систему пользователя в качестве владельца команды, которую он создает. Однако я получаю следующую ошибку:
Got a TypeError when calling Team.objects.create(). This may be because you have a writable field on the serializer class that is not a valid argument to Team.objects.create()
В models.py
:
class Team(models.Model):
name = models.CharField(max_length=100)
owner = models.OneToOneField(
to=get_user_model(),
on_delete=models.CASCADE,
editable=False,
)
budget = models.PositiveBigIntegerField(default=5000000)
country = MultiSelectField(choices=COUNTRY_CHOICES)
value = models.PositiveBigIntegerField(default=0)
В serializers.py
:
class TeamSerializer(ModelSerializer):
owner = UserSerializer(read_only=True)
class Meta:
model = Team
fields = '__all__'
read_only_fields = ['owner', 'budget', 'value']
В views.py
class TeamCreateView(CreateAPIView):
queryset = Team.objects.all()
permission_classes = [IsAuthenticated]
authentication_classes = [SessionAuthentication, BasicAuthentication]
serializer_class = TeamSerializer
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
В urls.py
path('team/', TeamCreateView.as_view(), name='create_team'),
Пожалуйста, не обращайте внимания на плохой отступ. Я не уверен, почему возникает ошибка или что я сделал по-другому. Уже проверил некоторые другие вопросы, такие как:
Django Rest Framework - "Got a `TypeError` when calling `Note.objects.create()'"
Django Rest Framework вложенные объекты создаются с помощью request.user
Интересно, не потому ли это, что я использую OneToOneField
вместо ForeignKey
, поскольку, насколько мне известно, ForeignKey
не следует использовать, когда unique=True