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_requireddecorator [Django-doc].