2015-09-27 60 views
1

我是第一次學習經理。 我想弄清楚如何正確設置這些管理器。看起來管理者在哲學上與SQL視圖相似。在Django中,爲什麼我的數據庫管理器失敗?

這裏是我的經理和類:

class SubscriptionManager(models.Manager): 

    def active_officers(self): 
     officers = self.get_queryset().filter(Modified__gte=datetime.now()-timedelta(days=365)).filter(Subscription_Type='O') 
     return officers 

    def lifer(self): 
     return self.get_queryset().filter(Lifetime=True) 

class Subscription(models.Model): 
    SType = (
     ('C', 'Civilian'), 
     ('E', 'Enlisted'), 
     ('O', 'Officer'), 
    ) 
    Subscription_Type = models.CharField(max_length=1, choices=SType) 
    Lifetime = models.BooleanField(default=False) 
    Member = models.ForeignKey(Member) 
    Modified = models.DateField() 

    objects = SubscriptionManager() 

    def __str__(self): 
     return self.Member.first_name + " " + self.Member.last_name + ": " + self.Subscription_Type + "; last modified: " + self.Modified.strftime('%Y-%m-%d') 

一旦設置我仍然可以執行Subscription.objects.all()沒有問題,卜如果我斷火Subscription.objects.lifer(),我收到以下錯誤:AttributeError: 'Manager' object has no attribute 'lifer'

我在Python 3.4中。我錯過了什麼? 謝謝

+0

嗯,這應該工作,我只是複製並粘貼它,它適用於我 – awwester

回答

0

你上面粘貼的代碼是正確的,它適用於我複製和粘貼後。

您代碼中的其他位置您將其列爲屬性我相信Subscription.objects.lifer而不是方法Subscription.objects.lifer()給出一個搜索,我相信應該清除您的錯誤。

+0

我會在哪裏看起來屬性?我完成了課程並試圖執行命令。我不知道要去哪裏看。 – arcee123

+0

我想通了。我正在使用pycharm,而我的python控制檯沒有正確導入的功能。我重新啓動了控制檯,然後他們立即啓動。 – arcee123