Доступ к self.request.user.profile в django generic views
Я работаю над API в Django rest framework и я использую generics.RetrieveUpdateAPIView
вот мой класс:
class updateProfile(generics.RetrieveUpdateAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
и вот моя модель:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=True, null=True)
email = models.EmailField(max_length=500, blank=True, null=True)
username = models.CharField(max_length=200, blank=True, null=True)
location = models.CharField(max_length=200, blank=True, null=True)
short_intro = models.CharField(max_length=200, blank=True, null=True)
bio = models.TextField(blank=True, null=True)
profile_image = models.ImageField(
null=True,
blank=True,
upload_to="profiles/",
default="profiles/user-default.png",
)
social_github = models.URLField(
max_length=200, blank=True, null=True, validators=[validate_url_github]
)
social_twitter = models.URLField(
max_length=200, blank=True, null=True, validators=[validate_url_twitter]
)
social_linkedin = models.URLField(
max_length=200, blank=True, null=True, validators=[validate_url_linkedin]
)
social_youtube = models.URLField(
max_length=200, blank=True, null=True, validators=[validate_url_yt]
)
social_website = models.URLField(max_length=200, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
id = models.UUIDField(
default=uuid.uuid4, unique=True, primary_key=True, editable=False
)
Я хочу получить доступ к request.user.profile
.
Я попробовал представление в виде :
class updateProfile(generics.RetrieveUpdateAPIView):
queryset = request.user.proifle //and also self.request.user.proile
serializer_class = ProfileSerializer
как я могу получить доступ к профилю пользователя в представлении, основанном на классе
Вы можете переопределить метод get_object
:
class updateProfile(generics.RetrieveUpdateAPIView):
serializer_class = ProfileSerializer
def get_object(self):
return self.request.user.profile