Django得到了来自其他人的大多数引用的对象

时间:2016-04-24 11:36:11

标签: django

我目前正在Django做一个小项目。我的想法是我有一个主管和项目的模型,主管模型包含诸如姓名,电子邮件等的详细信息。项目模型包含主题,描述,发布日期和截止日期等。

class Supervisor(models.Model):
    first_name = models.CharField(max_length=64)
    last_name = models.CharField(max_length=64)
    email = models.CharField(max_length=128)

class Project(models.Model):
    supervisor = models.ForeignKey(Supervisor, on_delete=models.SET_NULL, blank=True, null=True)
    name = models.CharField(max_length=64)
    pub_date = models.DateField(auto_now_add=True)
    deadline = models.DateField(blank=True, null=True)

我想获得一个项目最多的主管名单,最终只计算不超过截止日期的项目(活动项目)。这与项目列表的视图相同。

到目前为止我所拥有的是:

class IndexView(generic.ListView):
    model = Project
    template_name = 'index.html'

    def get_queryset(self):
        return Project.objects.order_by('-pub_date')

    def get_context_data(self, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        context['supervisor_list'] = Supervisor.objects.annotate(num_projects=Count('Project')).order_by('-num_projects')[0:5]
        return context

我收到FieldError,说它无法解析关键字' Project'。

1 个答案:

答案 0 :(得分:3)

Count('project')更改为from django.utils import timezone supervisors = Supervisor.objects \ .filter(project__deadline__gte=timezone.now()) \ .annotate(num_projects=Count('project')) \ .order_by('-num_projects')[:5] 将解决您获得的异常。

要获得活跃项目的前5名主管,请按项目截止日期添加过滤器:

chgrp -Rv apache /usr/share/ampache/www/config/ampache.cfg.php
chmod g=rwx -R /usr/share/ampache/www/config/ampache.cfg.php