Python Django Agragate模板中的查询问题

Python Django Agragate模板中的查询问题,python,django,templates,aggregate,Python,Django,Templates,Aggregate,这是我的密码: 型号 class compilation (models.Model): user = models.ForeignKey(User) title = models.CharField(max_length=100, null=False, blank=False) slot = models.PositiveIntegerField() slotpergroup = models.PositiveIntegerField() songs

这是我的密码:

型号

class compilation (models.Model):
    user = models.ForeignKey(User)
    title = models.CharField(max_length=100, null=False, blank=False)
    slot = models.PositiveIntegerField()
    slotpergroup = models.PositiveIntegerField()
    songs = models.ManyToManyField(song,related_name="slotsongs", null=True, blank=True)

class song(models.Model):
    title = models.CharField(max_length=150)
    content = models.FileField(upload_to='static/canzoni', validators=[validate_file_audio])
    groups = models.ManyToManyField(group)


class group(models.Model):
    user = models.ManyToManyField(User)
    name = models.CharField(max_length=50)
    genr = models.CharField(max_length=50)
    avatar = models.FileField(upload_to='static/logogruppi', validators=[validate_file_extension])
查看

c = {}
compilation = compilation.objects.all()
c.update({'compilation': compilation })
return render_to_response('compilation.html', c, context_instance=RequestContext(request))
模板编译.html

{% for cd in compilation %}

    {{ cd.title }}<br/> 

    PLAYLIST
    {% for song in cd.songs.all %}
        {{ song.title | capfirst }}<br/>
        {% for g in song.groups.all %}
            {{ g | capfirst }}
        {% endfor %}
    {% endfor %}


    {% for gr in user.group_set.all %}    

    --> here my problem, I need something like this: 
    var = song.objects.filter(groups=gr).filter(slotsongs=cd).count()
    if cd.slotpergropu <= var:    
        print: "all slots are busy for this group"  <--

    {% endfor %}

{% endfor %}
{%用于编译中的cd%}
{{cd.title}}
播放列表 {cd.songs.all%中歌曲的%s} {{song.title | capfirst}}
{%g在song.groups.all%} {{g | capfirst}} {%endfor%} {%endfor%} {user.group_set.all%中gr的% -->我的问题是,我需要这样的东西: var=song.objects.filter(groups=gr).filter(slotsongs=cd).count()
如果cd.slotpergropu不幸,则不能调用需要模板中参数的函数。您必须在
views.py
中组装所需内容,编写模板标记或过滤器。查看以了解更多信息。

Django通过在模板中不隐式允许任何业务逻辑来强制执行MVC框架。

按照标准这些事情应该在视图中完成,并且结果应该作为上下文传递给模板

但是,如果有必要在模板中进行此查询,则可以使用模板标记进行此查询,如下所示:

在此处使用关联标签

{% load songs_tags %}
{% get_songs_for_group gr cd  as var %}
创建模板标记文件

### templatetags/songs_tags.py ###
@register.assignment_tag
def get_songs_for_groups(group, collection):
 return song.objects.filter(groups=group).filter(slotsongs=collection).count()

有关更多详细信息,请参阅文档:

是的,我知道使用视图会更好,但在这种情况下,我还没有找到一种简单的方法。如果你有什么建议,我会感谢你的。在所有情况下,非常感谢您这个定制标签的作品!