Я хочу использовать RetrieveModelMixin.Настройка по умолчанию - поиск с помощью pk, но я хочу найти экземпляр модели с другим полем модели.Тогда как я могу это сделать?Я пытался добавить lookup_fields = 'usename', но это не удалось.
#models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default='', blank=True, null=False)
username = models.CharField(max_length=100, blank = False, null = True)
post = models.ForeignKey(Post, related_name='post', on_delete=models.CASCADE, null =True)
introduction = models.TextField()
#serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
lookup_fields = 'username'
#urls.py
path('test/<slug:username>/', views.ProfileDetail.as_view(),name='profiles-detail'),
#views.py
class ProfileDetail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
queryset = Profile.objects.all()
serializer_class = ProfileSerializer
lookup_fields = 'username'
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
Это приводит к
Ожидается, что представление ProfileDetail будет вызываться с аргументом ключевого слова URL-адреса с именем "pk".Исправьте ваш URL conf или правильно установите атрибут .lookup_field
в представлении.
Как я могу исправить эту ошибку?Спасибо.