我有一个像这样工作的model.py,我可以使用Django admin为这个模型添加记录:
from django.db import models
from django.contrib import admin
from audiofield.fields import AudioField
# Create your models here.
class Music(models.Model):
tittel = models.CharField(max_length=20, default = "titel her")
artist = models.CharField(max_length=20, default = "Artist")
cover = models.FileField("Cover", upload_to="player/cover/")
audio = AudioField(upload_to='player/audio/', blank=True, ext_whitelist=(".mp3",".wav",".ogg"))
is_active = models.BooleanField(("is active"), default = False)
date_created = models.DateField(verbose_name="Created on date", auto_now_add="True")
class MusicAdmin(admin.ModelAdmin):
list_display = ('tittel', 'artist', 'cover', 'audio', 'is_active', 'date_created')
我想使用模板标签在index.html中显示记录。 我的音乐应用文件夹结构:
.
├── admin.py
├── __init__.py
├── models.py
├── templatetags
│ ├── __init__.py
│ ├── musikk_tags.py
├── tests.py
└── views.py
music_tag.py:
from django import template
from music import models
register = template.Library()
@register.assignment_tag
def get_music_tags():
return models.Music.objects.all()
我正在尝试在index.html中使用这样的模板标签:(我只希望显示活动记录)
<ul class="playlist hidden">
{% load musikk_tags %}
{% get_musikk_tags as musikk %}
{% if musikk.isactive %}
<li audiourl="{{ musikk.audio.url }}" cover="{{musikk.cover.url}}" artist="{{musikk.artist}}">{{musikk.tittel}}</li>
{% endif %}
</ul>
我没有收到任何错误,但仍然没有显示音乐。 不使用音乐应用程序时,如下所示对列表进行硬编码:
<ul><li audiourl="01.mp3" cover="cover1.jpg" artist="Artist 1">01.mp3</li></ul>
一切都按预期工作。模板标签必定存在某种问题。提前谢谢你!
答案 0 :(得分:0)
get_music_tags
返回一个查询集 - (在本例中)所有Music对象的集合。查询集本身没有isactive
,audio
或cover
属性:只有查询集内的各个项才有。你需要遍历它们:
{% get_musikk_tags as all_musikk %}
{% for musikk in all_musikk %}
{% if musikk.isactive %}
<li audiourl="{{ musikk.audio.url }}" cover="{{musikk.cover.url}}" artist="{{musikk.artist}}">{{musikk.tittel}}</li>
{% endif %}
{% endfor %}