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

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

问题描述:

我正在开发一个Python/Django项目。我必须使用YearArchiveView基类,所以我有这样的:如何使用函数将结果传递给'queryset'?

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和单独调用它,但是我得到functionself未定义。

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

如何将它传递给queryset

+0

你是什么意思*没有运气的意思是*?我们需要看看你是如何实现你的方法的。您是否考虑过使用额外方法的自定义管理器? – styvane

+0

刚编辑的问题。基本上我知道这个函数或自我没有定义。 –

而不必queryset组,在Django视图可以覆盖/使用get_queryset方法:

class ArchiveView(YearArchiveView): 

    def get_queryset(self): 
     ...magic here... 

     return custom_queryset 
+0

这似乎工作! –

+1

其实很简单:它应该在'get_queryset'的'self'内。所以在这个方法中你可以找到它:'self.request'。 – White