Как использовать запрос внутри ViewClass - PullRequest
0 голосов
/ 21 мая 2018

Я работаю над приложением recycle django polls. Я создал модель вопроса, которая содержит авторизованное поле, в котором я храню идентификатор пользователей, которым разрешено просматривать вопросы

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    users = User.objects.values_list('id','username')
    authorized = MultiSelectField(choices=users,null=True)
    def __str__(self):
        return "{question_text}".format(question_text=self.question_text)

У меня проблема с написаниемНа мой взгляд, потому что я не знаю, как использовать flask import request, чтобы получить идентификатор пользователя, чтобы показать только те вопросы, которые предназначены для вошедшего в систему пользователя

class VotesView(generic.ListView):
    template_name = 'polls/votes.html'
    model = Question

    def get_queryset(request):
        return Question.objects.filter(authorized__icontains=request.user.id)

Продолжать получать ошибку:

    return Question.objects.filter(authorized__icontains=request.user)
AttributeError: 'VotesView' object has no attribute 'user' 

или

This typically means that you attempted to use functionality that needed
an active HTTP request.  Consult the documentation on testing for
information about how to avoid this problem.

Спасибо за любую помощь, я застрял на 2 дня

1 Ответ

0 голосов
/ 21 мая 2018

Обычно в Django первым параметром метода instance является self, ссылка на объект, который в данный момент вызывается.Поэтому вам следует переписать его с параметром self.

Теперь, конечно, наш self - это , а не запрос.Но есть и хорошие новости: ListView имеет атрибут .request, поэтому мы можем получить пользователя с помощью этого атрибута .request:

class VotesView(generic.ListView):
    template_name = 'polls/votes.html'
    model = Question

    def get_queryset(<b>self</b>):
        return Question.objects.filter(
            authorized__icontains=<b>self.</b>request.user.id
        )
...