我正在使用Django 2
我有一个模型,我在其中编写了一个queryset类来添加搜索功能。
我只想显示那些与经过身份验证的用户关联的结果。我用的是
user=self.request.user
在queryset中的筛选器中
注释/型号。py公司
class NoteQuerySet(models.query.QuerySet):
def authenticated(self):
return self.filter(user=self.request.user)
def search(self, query):
lookups = Q(title__icontains=query) | Q(tags__icontains=query)
return self.filter(lookups).authenticated().distinct()
class NoteManager(models.Manager):
def get_queryset(self):
return NoteQuerySet(self.model, using=self._db)
def search(self, query):
return self.get_queryset().search(query)
class Note(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=250, blank=True, default='Untitled')
tags = models.CharField(max_length=150, blank=True)
objects = NoteManager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('notes:update', kwargs={'pk': self.pk})
在里面
注释/视图。py公司
class SearchNoteView(ListView):
template_name = 'notes/my_notes.html'
context_object_name = 'notes'
def get_queryset(self, *args, **kwargs):
query = self.request.GET.get('q', None)
if query is not None:
return Note.objects.search(query)
但此返回错误为
AttributeError: 'NoteQuerySet' object has no attribute 'request'
正如错误所述,它正在尝试定位
request
在课堂上的作用。
如何使用
要求
在queryset类中?