Django login пользователя вместо id в профиле кастомного пользователя
Как использовать login вместо id при обращении к профилю пользователя
views.py
class userProfileDetailView(RetrieveUpdateDestroyAPIView):
queryset = Profile.objects.all()
serializer_class = UserProfileSerializer
lookup_field = 'user'
permission_classes = [IsOwnerProfileOrReadOnly, IsAuthenticated]
urls.py
urlpatterns = [
path("all-profiles", UserProfileListCreateView.as_view(), name="all-profiles"),
path("profile/<str:user>/", userProfileDetailView.as_view(), name="profile"),
]
serializers.py
class UserCreateSerializer(UserCreateSerializer):
class Meta(UserCreateSerializer.Meta):
model = UserAccount
fields = ('id', 'login', 'email', 'firstName', 'lastName', 'password')
class UserProfileSerializer(serializers.ModelSerializer):
user = UserCreateSerializer(required=True)
class Meta:
model = Profile
fields = '__all__'
Ответы (1 шт):
Автор решения: Za Ars
→ Ссылка
Если не сработает lookup_field = 'user__login', то можете переопределить get_object()` вьюхи:
def get_object(self):
try:
return Profile.objects.get(user__login=self.request.kwargs['user'])
except Profile.DoesNotExist:
raise Http404