Использование переменных в классе в django

Я пытаюсь сделать график, который отображает данные о температуре и временной метке, однако я хочу отфильтровать их. Текущая база данных, из которой берутся эти данные, выглядит следующим образом: enter image description here

И я хочу, чтобы график отображал данные только конкретного пользователя, который уже вошел в систему. Более того, у меня есть страницы для каждого ID комнаты, показывающие данные из этой комнаты и с этим пользователем, и именно там я хочу, чтобы отображался график. Таким образом, вы входите в систему и переходите на страницу конкретной комнаты, и график показывает температуру и временную метку данных из этой комнаты (и, конечно, с этим именем пользователя). Текущая структура отображает график, загружая данные в формате JSON в ссылку под названием API, и код для получения этих данных API показан здесь.

class ChartData(APIView, models.Model):
authentication_classes = []
permission_classes = []

def get(self, request, *args, **kwargs):
    labels = []
    for e in Post.objects.all():
        labels.append(e.timestamp)
     #   print(e.room_id)
      #  print(e.username)
        #print(e.temperature)
    chartLabel = "my data"
    chartdata = []
    for e in Post.objects.all():
        chartdata.append(e.temperature)
    data ={
                 "labels":labels,
                 "chartLabel":chartLabel,
                 "chartdata":chartdata,
         }
    return Response(data)

Итак, сейчас он берет каждую температуру и временную метку в базе данных и помещает это на график. Чтобы изменить это так, чтобы он брал только те данные, где имя пользователя совпадает с именем пользователя, вошедшего в систему, и ID комнаты правильный, я предполагаю, что мне нужно добавить что-то в классы аутентификации или разрешения. Или если бы я мог передать аргумент request.user.get_username() в этот класс (который работает в моих других представлениях), я мог бы фильтровать набор объектов через это. более того, в предыдущем представлении у меня есть это:

def roomview(request, room_id):
logged_in_username = request.user.get_username()
Posts = Post.objects.filter(username=logged_in_username).filter(room_id=room_id)
context = {
    'Posts' : Posts
}
return render(request, 'dashboard/roomview.html', context)

Этот код показывает объекты с тем же именем пользователя и тем же идентификатором комнаты, который выбирается, и отображает их на этой странице. Мне нужно найти способ передать этот room_id в класс chartData, чтобы он загружал только JSON файл требуемых данных, основанных на id комнаты и пользователе, который вошел в систему, но у меня не получается, любая помощь будет очень признательна.

Поэтому для получения имени пользователя мне пришлось реализовать следующую аутентификацию, в settings.py я добавил следующее:

REST_FRAMEWORK = {
   'DEFAULT_AUTHENTICATION_CLASSES': [
      'rest_framework.authentication.BasicAuthentication',
      'rest_framework.authentication.SessionAuthentication',
   ]
}

Затем в файле views.py я добавил следующее:

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated

class ChartData(APIView):
    authentication_classes = [SessionAuthentication, BasicAuthentication]
    permission_classes = [IsAuthenticated]
    def get(self, request, *args, **kwargs):
        UserIn = (request.user.username)

Для идентификации номера мне нужно было сделать только следующее:

class ChartData(APIView):
    def get(self, request, *args, **kwargs):
        for key, value in kwargs.items():
            inroom = (value)
Вернуться на верх