Django: Невозможно фильтровать по безусловному выражению при попытке связать все значения, записанные для текущего пользователя

Я хочу связать каждое значение, записанное текущим пользователем, (история о том, что я хочу распечатать некоторые поля формы) и боюсь, что в случае, если более 1 пользователя вошли в систему в одно и то же время и хотят сгенерировать pdf, оба они распечатают те же последние значения, введенные в распечатку.

Итак, я хочу отфильтровать значения полей на основе текущего пользователя, вошедшего в систему с помощью сессии. Первый шаг: Я добавил еще один класс в models.py

models.py

class UserSession(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    session = models.ForeignKey(Session, on_delete=models.CASCADE) 

Второй шаг: в views.py: (функция, которая отвечает за генерацию pdf), я закодировал следующим образом:

def forms_render_pdf_view(request, *args, **kwargs):
   template_path = 'pdf.html' 
   user = request.user 
   user_sessions = UserSession.objects.filter(user = user)
   field_name = 'emploi'
   obj_m = Loads.objects.filter(user_sessions).last()
   field_obj_m = Loads._meta.get_field(field_name)
   field_value_m = field_obj_m.value_from_object(obj_m)  
   emploi = str(field_value_m)

Когда я пытаюсь создать свою распечатку, она выдает мне:

Cannot filter against a non-conditional expression.

Заранее спасибо, как я могу связать все записанные значения с текущим пользователем корректно .

Вы можете .filter(…) [Django-doc] на связанную модель с помощью:

from django.contrib.auth.decorators import login_required

@login_required
def forms_render_pdf_view(request, *args, **kwargs):
    template_path = 'pdf.html'
    obj_m = Loads.objects.filter(user_session__user=request.user).last()
    emploi = str(obj_m.emploi)
    # …

Note: You can limit views to a view to authenticated users with the @login_required decorator [Django-doc].

Вернуться на верх