Phi*_*ord 5 django django-queryset
我有一个相当复杂的查询集,我目前在单个视图中使用它来获取对象列表.
我想在其他几个视图中使用相同的查询集,但不希望多次复制代码.我可以使用管理器,将查询集保存在一个地方,并在每个视图中使用它,除了查询依赖于每个页面上不同的日期.
据我了解,管理员不允许你传递变量...所以我想知道我应该把这个查询放在哪里,以免在几个视图中不断重复它.有什么想法吗?
FWIW,这是我的查询集,published_date是每个页面上更改的变量:
day_publications = Publication.objects.filter(
Q(reading__end_date__gte=published_date) | Q(reading__end_date__isnull=True),
reading__start_date__lte=published_date,
).select_related('series',)
Run Code Online (Sandbox Code Playgroud)
我认为你应该使用经理.我经常在我的经理中使用这样的方法:
class CustomManager(models.Manager):
def get_records(self, city_slug, dt):
filter_kwargs = {
'city__slug': city_slug,
'date_from__lt': dt,
'date_to__gt': dt,
}
return super(CustomManager, self).get_query_set().filter(**filter_kwargs)
Run Code Online (Sandbox Code Playgroud)
然后我在我的模型上运行查询:
MyModel.objects.get_records(city.slug, datetime.now())
Run Code Online (Sandbox Code Playgroud)
当然,你可以跟进另一个过滤器和链接这些或做任何你想做的事情.这种方法没有任何问题,这就是管理者在这里:-).
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |