Я новичок в Django Rest Framework и пытаюсь создать API, который позволяет пользователю создавать проекты. Это означает, что пользователь, прошедший аутентификацию с помощью токена knox, должен стать владельцем созданного экземпляра проекта.
Однако при выполнении POST-запроса к / api / project / я получаю следующую ошибку:
AttributeError: Got AttributeError when attempting to get a value for field `username` on serializer `UserSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `ManyRelatedManager` instance.
Original exception text was: 'ManyRelatedManager' object has no attribute 'username'.
urls.py:
urlpatterns = [
path('api/projects/', ProjectListCreate.as_view()),
path('api/project/', ProjectCreate.as_view()),
path('api/project/<int:pk>', ProjectDetailShow.as_view())
]
api.py:
class ProjectListCreate(generics.ListAPIView):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
class ProjectDetailShow(generics.RetrieveUpdateDestroyAPIView):
queryset = Project.objects.all()
serializer_class = ProjectDetailSerializer
permission_classes = [IsOwnerOrReadOnly]
class ProjectCreate(generics.CreateAPIView):
serializer_class = ProjectDetailSerializer
permission_classes = [permissions.IsAuthenticated]
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
serializer.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email')
class ProjectSerializer(serializers.ModelSerializer):
owner = UserSerializer(read_only=True)
class Meta:
model = Project
fields = ('id', 'name', 'owner', 'mission', 'category', 'status')
class ProjectDetailSerializer(serializers.ModelSerializer):
owner = UserSerializer(read_only=True)
participants = UserSerializer(read_only=True)
class Meta:
model = Project
fields = ('id', 'name', 'owner', 'participants', 'mission', 'category', 'description', 'status')
models.py:
class Project(models.Model):
STATUS_CHOICES = (...)
CATEGORY_CHOICES = (...)
name = models.CharField(max_length=50)
owner = models.ForeignKey(
User, related_name="owned_projects", on_delete=models.CASCADE)
participants = models.ManyToManyField(User, related_name="participates_projects", default=None)
mission = models.CharField(max_length=100)
description = models.CharField(max_length=500)
category = models.CharField(max_length=100, choices=CATEGORY_CHOICES, default='Geplant')
status = models.CharField(max_length=100, choices=STATUS_CHOICES, default='Andere')
last_update = models.DateTimeField(auto_now_add=True)
Я надеюсь, что кто-нибудь может мне помочь с этим!
Заранее спасибо:)