我在我的模型数据库中列出了来自其他模型的每个图标下的每个字体。
我想为每个图标获取一个随机字体。
以下是我展示模板文件的方式:
{% for Fo in FormOne %}
{% for Ft in FormTwo %}
{% for f in Ft.icon.all %}
<p>{{ f.icon_name }}</p> #for each icon name
{% for f in Fo.checkbox.all %}
<p>{{ f.font_name }}</p> #show one random font name.
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
我得到了这样的观点:
context = {'FormOne':FormOne.objects.all(), 'FormTwo':FormTwo.objects.all()}
这是我的模型结构:
class Font(models.Model):
font_name = models.CharField(max_length=100)
font_css = models.CharField(max_length=100)
class FormOne(models.Model):
name = models.CharField(max_length=40)
checkbox = models.ManyToManyField(Font, blank=True)
...
class Icons(models.Model):
icon_name = models.CharField(max_length=100)
...
class FormTwo(models.Model):
owner = models.ForeignKey(FormOne)
icon = models.ManyToManyField(Icons, blank=True)
...
我怎样才能实现它?
答案 0 :(得分:0)
您可以使用custom filters。
这是一个从列表中选择随机元素的过滤器:
import random
from django import template
register = template.Library()
@register.filter('random_font', random_font)
def random_font(l):
f = dict(random.choice(list(l)))
return "%s : %s" % (f['font_name'], f['font_css'])
n.b.,编写第一个自定义过滤器有很多工作,包括创建register
实例,注册自定义过滤器
使用register.filter
装饰器和load
您的自定义库
模板中的过滤器。