#python #django #class #view
Вопрос:
У меня есть представление на основе классов:
class PostListViewMojeReported(ListView):
def get_username(self, **kwargs):
login_username = request.user.username
context = {'login_username': login_username}
return context
model = Post
template_name = 'blog/filter_moje_reported.html'
context_object_name = 'posts'
queryset = Post.objects.filter(Q(status='Otvorena') amp; (Q(res_person_1_username=username) | Q(res_person_2_username=username)))
ordering = ['-date_posted']
paginate_by = 30
Я не знаю, как получить имя пользователя от текущего пользователя, вошедшего в систему, для использования в качестве фильтра в моем наборе запросов. Мне нужно сравнить текущего пользователя, вошедшего в систему, с «именем пользователя res_person_1_username» и «именем пользователя res_person_2_username».
Ответ №1:
Вы можете получить объект requerst с self.request
помощью , так что:
class PostListViewMojeReported(ListView):
model = Post
template_name = 'blog/filter_moje_reported.html'
context_object_name = 'posts'
paginate_by = 30
def get_username(self, **kwargs):
login_username = self.request.user.username
context = {'login_username': login_username}
return context
def get_queryset(self, *args, **kwargs):
username = self.request.user.username
return super().get_queryset(*args, **kwargs).filter(
Q(res_person_1_username=username) | Q(res_person_2_username=username),
status='Otvorena'
).order_by('-date_posted')
Однако я бы посоветовал работать с двумя ForeignKey
s в модели пользователя, а не сохранять имя пользователя, так как возможно, что позже пользователь удалит свою учетную запись, а другой человек затем создаст учетную запись с этим именем пользователя.
Комментарии:
1. Спасибо вам за решение, оно сработало безупречно. И за совет.