我试图通过用户名创建一个过滤器,但是django nonstop需要我的id。这里的修复是什么?
class FavoriteList(generics.ListCreateAPIView):
permission_classes = [permissions.IsAuthenticatedOrReadOnly, IsCurrentUserOwnerOrHidden]
queryset = Favorite.objects.all()
serializer_class = FavoritesSerializer
name = 'favorite-list'
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
def filter_queryset(self, queryset):
owner_name = self.request.query_params.get('owner', None)
if owner_name is not None:
queryset = queryset.filter(owner=owner_name)
return queryset
localhost/favorite?owner=1正在工作,但loclahost/favorite?所有者=管理员不要
1条答案
按热度按时间46scxncf1#
它是这样工作的,因为
ForeignKey
的.filter
方法按id搜索。要按username
字段搜索,您必须使用正确的查找:你可以分开这些值,或者我可能建议聪明的try/except:
使用上面的解决方案,您可以将对象的id或username属性作为GET参数传递。