@fantom_ask

Как найти определённый параметр через get запрос?

Я ищу функцию эквивалентную
User.objects.get(email=email)

Но
data = {
     'email': 'email',
}
res2 = requests.get(url,data=data)

Выводит все поля
[{'id': 1, 'username': 'admin', 'email': 'admin@g.com'}, {'id': 2, 'username': 'test', 'email': 'f@d.com'}]

А должен только
{'id': 1, 'username': 'admin', 'email': 'admin@g.com'}


Мой код
serializers.py
class UserSerializer(serializers.ModelSerializer):
	class Meta:
		model = User
		fields = (
			'id',
			'username',
			'email',
		)

views.py
class UserViewSet(viewsets.ModelViewSet):
	serializer_class = UserSerializer
	#permission_classes = [permissions.IsAuthenticated]
	queryset = User.objects.all()

urls.py
urlpatterns = [
	path('user/', views.UserViewSet.as_view({
		'get': 'list',
		'get_queryset': 'get_queryset',
		'post': 'create',
	})),
]


Я не хочу создавать дополнительно новые функций и url только ради поиска только по email
Я хочу искать и по username и по id
Вариант просто искать внутри уже полученного dict() мне не подходит, так как если объем данных большой то получение всего dect() может занять много времени.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler
бекенд-разработчик на python
В философии RestFramework get-параметры чаще всего используются как аргументы для фильтров в API списка объектов. Если Вам подойдет вариант, когда по ссылке /user/?email=email@example.com возвращается массив из 0 или 1 элемента (для уникальных email), то добавляйте в UserViewSet filter_backend, либо просто используйте напрямую request.query_params в filter_queryset.
Если же Вам жизненно необходимо, чтобы API списка объектов иногда возвращало массив, а иногда словарь - тут ни я ни rest framework вам не помощники, пишите ручками.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы