"Django中,为什么我的数据库管理器失效了?"

2024-09-25 06:31:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次学习管理者。 我正试图找出如何正确设置这些经理。看来,管理者在哲学上与SQL视图类似

这是我的经理和班级:

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。我错过了什么? 谢谢


Tags: selfreturnobjectsmodelsdeftypefilter经理
1条回答
网友
1楼 · 发布于 2024-09-25 06:31:04

您上面粘贴的代码是正确的,在复制和粘贴后对我有效

在代码的其他地方,您将它列为属性,我相信Subscription.objects.lifer而不是方法Subscription.objects.lifer()进行搜索,我相信这会清除您的错误

相关问题 更多 >