2016-07-21 61 views
0

有兩個相關的類在我的代碼:如何排序查詢集由

class TreeNode(MPTTModel): 
    ... 
    @property 
    def last_payment(self): 
     return self.annuities.last() 

class FilterPayment(models.Model): 
    class Meta: 
     verbose_name = 'взнос за фильтр' 
     verbose_name_plural = 'взносы за фильтр' 

    expected_date = models.DateField(verbose_name='ожидаемая дата') 
    fact_date = models.DateField(verbose_name='фактическая дата', null=True, blank=True) 
    total = models.IntegerField(verbose_name='сумма') 
    client = models.ForeignKey(TreeNode, related_name='annuities', verbose_name='клиент') 

如何通過last_payment__expected_date過濾TreeNode.objects.all()如果last_payment是財產?

+1

不,您不能在queryset上執行此操作。您可以使用python排序函數,通過與'last_payment()'方法相關的'key'參數進行排序:https://wiki.python.org/moin/HowTo/Sorting#Key_Functions。或者你有一個總是記錄「last_payment」的字段。 –

回答

0

您無法使用屬性來過濾Django查詢集。但是,您可以執行以下操作,它會給出所需的結果:

import datetime 
TreeNode.objects.filter(annuities__expected_date = datetime.datetime(YYYY, MM, DD))