代码之家  ›  专栏  ›  技术社区  ›  Pablo Viacheslav

如何使用函数将结果传递给“queryset”?

  •  1
  • Pablo Viacheslav  · 技术社区  · 7 年前

    YearArchiveView公司 基类,所以我有这个:

    class ArchiveView(YearArchiveView):
    
        queryset = ArticlePage.objects.all()
        make_object_list = True
        date_field = 'date'
        template_name='btcmag/pages/archives_list.html'
        allow_future = False
        context_object_name = 'articles'
    
        def extract_month(self, article):
            'extracts the starting date from an entity'
            return article.date.month
    
        def extract_year(self, article):
            'extracts the starting date from an entity'
            return article.date.year
    

    而不是 queryset = ArticlePage.objects.all() ,我希望有一个函数返回正确的查询集。类似于:

    queryset = getQuerySet()

    我尝试在类中定义函数,用 self 独自一人,但我明白了 function 自己 未定义。

    我必须在哪里定义函数/方法?

    我怎么能把它传给 queryset ?

    1 回复  |  直到 7 年前
        1
  •  3
  •   White    7 年前

    而不是 queryset 设置,在Django视图中,您可以覆盖/使用 get_queryset 方法:

    class ArchiveView(YearArchiveView):
    
        def get_queryset(self):
            ...magic here...
    
            return custom_queryset