Это мой вид входа в систему.
def login(request):
username = request.data.get("username")
password = request.data.get("password")
if username is None or password is None:
return Response({'error': 'Please provide both username and password'},
status=HTTP_400_BAD_REQUEST)
user = authenticate(username=username, password=password)
if not user:
return Response({'error': 'Invalid Credentials'},
status=HTTP_404_NOT_FOUND)
token, _ = Token.objects.get_or_create(user=user)
voting_result = Count.objects.filter(userId=user.id)
print(voting_result)
channel = {}
for e in voting_result:
channel[e.channelId] = e.rate
return Response({'token': token.key, 'user': user.username, 'email': user.email, 'id': user.id, 'stats': channel},
status=HTTP_200_OK)
Я хочу добавить словарный канал в свой ответ. Но я получаю эту ошибку.
keys must be str, int, float, bool or None, not News_Channel
Что я должен сделать, чтобы в моем ответе был словарь каналов ? Я буду использовать его в своем приложении реакции.
Всего 2 ответа
Диктофоны Python могут обрабатывать только неизменяемые хешируемые ключи, такие как str, int, float, bool, tuple, frozenset и т. Д. Если сущность не является хешируемой или изменяемой, она не может быть ключом словаря. Если вы хотите использовать e.channelId
качестве ключа, вы должны преобразовать его в строку, например:
channel[str(e.channelId)] = e.rate
Похоже, вам нужен идентификатор channelId
качестве ключа
Пытаться:
for e in voting_result:
channel[e.channelId.id] = e.rate