django - 如何在 Django 中将查询集过滤到当前用户
问题描述
我有一个网站可以抓取当前用户下列出的所有记录。
现在它会抓取并将其过滤到所有可用记录,然后将其过滤到当前用户。有没有办法让它不必进行初始过滤?
class PromiseView(SingleTableView):
queryset = Promise.objects.filter(deleted__isnull=True)
table_class = PromiseTable
template_name = 'promise.html'
def get_queryset(self):
return self.queryset.filter(
windows_user=self.request.user, # There has to be a better way for this one.
)
我想这样做,所以初始查询集等于
queryset = Promise.objects.filter(windows_user=self.request.user,deleted__isnull=True)
并摆脱 get_queryset 功能。首先查询整个数据库然后再次查询以将其过滤到我想要的方式是没有意义的。
这是模型
class Promise(models.Model):
windows_user = models.CharField('Windows', max_length=20)
event_date = models.DateTimeField('Date')
notes = models.CharField('note', max_length=100)
deleted = models.DateTimeField('Deleted', null=True)
class Meta:
db_table = 'form_promise'
indexes = [
models.Index(fields=['windows_user','deleted', ], name='index01'),
]
解决方案
您不需要包含第一个queryset = ...
,您可以使用get_queryset()
来填充数据。如果你想明确一点,那么你可以初始化一个qs.none()
不会命中数据库的空查询集,然后从get_queryset()
.
class PromiseView(SingleTableView):
queryset = Promise.objects.none() # optional
table_class = PromiseTable
template_name = 'promise.html'
def get_queryset(self):
return Promise.objects.filter(
deleted__isnull=True,
windows_user=self.request.user.username, # I think you need user.username here.
)
推荐阅读
- swiftui - 用于导航的 SwiftUI PencilKit 协调器
- python - ttributeError:类型对象''没有属性'get_extra_actions'
- javascript - 在 Reactjs 中检测复杂对象状态变化的最简单方法是什么
- c# - 使用 Scrutor 自动进行依赖注入
- flutter - 是否有任何文本编辑器我也可以在 Flutter 的文本中间插入图像?
- shopify - 如何使用标签链接获取所有集合产品的所有标签
- ios - 如何从外围设置Corebluetooth通知的大小
- javascript - Jquery Json 值不会改变
- java - 尝试在我的组合框上使用 setConverter(),但是如果我把它放在我的初始化函数中,我会得到一个空指针异常
- regex - 如何为手机号码编写正确的正则表达式必须从特定数字或字符开始?MVC