При попытке создать новый профиль я получаю следующую ошибку.
Got a `TypeError` when calling `Profile.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Profile.objects.create()`. You may need to make the field read-only, or override the ProfileSerializer.create() method to handle this correctly.
Original exception was:
Я не уверен, почему я получаю эту ошибку.
У меня есть модель и сериализатор и представления и URL-адреса.Я даже не уверен, откуда происходит ошибка в процессе.
models.py
class Profile(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE
)
synapse = models.CharField(max_length=25, null=True)
bio = models.TextField(null=True)
profile_pic = models.ImageField(upload_to='./profile_pics/',
height_field=500,
width_field=500,
max_length=150)
facebook = models.URLField(max_length=150)
twitter = models.URLField(max_length=150)
updated = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.user.username + self.synapse
profileViews.py
from users.models import Profile
from rest_framework.generics import ListAPIView, RetrieveAPIView, CreateAPIView
from rest_framework.generics import DestroyAPIView, UpdateAPIView
from users.api.serializers import ProfileSerializer
class ProfileListView(ListAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
class ProfileRetrieveView(RetrieveAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
class ProfileCreateView(CreateAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
class ProfileDestroyView(DestroyAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
class ProfileUpdateView(UpdateAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
urls.py
from django.urls import path
from users.api.views.profileViews import ProfileListView, ProfileRetrieveView, ProfileCreateView
from users.api.views.profileViews import ProfileDestroyView, ProfileUpdateView
urlpatterns = [
path('', ProfileListView.as_view()),
path('create/', ProfileCreateView.as_view()),
path('update/<pk>/', ProfileUpdateView.as_view()),
path('delete/<pk>/', ProfileDestroyView.as_view()),
path('<pk>/', ProfileRetrieveView.as_view())
]
Сериализатор для профиля
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = (
'id',
'user',
'synapse',
'bio',
'profile_pic',
'facebook',
'twitter'
)
означает ли это, что мне нужно указать тип изображения.Я хочу, чтобы изображения профиля были в главной папке пользователей.
![enter image description here](https://i.stack.imgur.com/zaTdP.png)