模型的项目不单独计算

时间:2021-05-16 05:33:29

标签: python django django-views

我正在构建一个博客应用程序,但遇到了一个问题。

models.py

class Album(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,default='',null=True)
    file = models.ImageField(upload_to='posts',null=True,blank=True)
    video = models.FileField(upload_to='videos',null=True,blank=True)

views.py

def new_story(request):
    file = Album.objects.filter(user=request.user)
    context = {'file':file}
    return render(request, 'mains/new_story.html', context)   

当我count使用

<块引用>

video_limit = Album.objects.filter(user=request.user,video__isnull=False).count()

然后它也计算 file 个对象,但我正在尝试 count only video objects

我想做什么:-

fields 模型中有两个 Album,我正在尝试分别 count file and video。当我使用 template{{ file.count }} 中计数时,它会计算所有文件和视频,但是当我尝试单独计算 {{ file.video.count }} 时,它不会显示。

我不知道,我如何单独计算。

1 个答案:

答案 0 :(得分:0)

{{ file.video.count }} 是空的,因为文件是一个查询集并且它没有“视频”属性。

您可以在不使用聚合的情况下实现您想要的。最简单的方法是单独存储视频计数并将其传递给上下文:

def new_story(request):
    file = Album.objects.filter(user=request.user)
    video_count = file.filter(video__isnull=False).count()
    context = {
        'file': file,
        'video_count': video_count
    }
    return render(request, 'mains/new_story.html', context)
    
    

在您的模板中,您可以只使用 {{ video_count }}

更新

尝试将 video_count 替换为以下内容:

video_count = file.exclude(video='').count()

from django.db.models import Q
video_count = file.filter(Q(video__isnull=True) | ~Q(video='')).count()
相关问题