我想有一个标签列表的10个主要标签,但显示的随机顺序,因为字体的重量将决定他们的重量。
首先,我订购对象,得到10个标签,而不是我使用洗牌随机排序。到目前为止它起作用了。我现在的问题是使用{{forloop.counter0} in模板,它以随机顺序输出下面的代码:
<tr>
<td class="tag-0">Tag3</td>
</tr>
<tr>
<td class="tag-1">Tag1</td>
</tr>
<tr>
<td class="tag-2">Tag2</td>
</tr>相反,我希望是这样的:
<tr>
<td class="tag-2">Tag3</td>
</tr>
<tr>
<td class="tag-0">Tag1</td>
</tr>
<tr>
<td class="tag-1">Tag2</td>
</tr>模板:
{% for t in tags %}
<tr>
<td class="tag-{{forloop.counter0}}">{{t.title}}</td>
</tr>
{% endfor %}意见:
tags = list(Model.objects.order_by('title')[:10])
random.shuffle(tags)发布于 2015-08-25 19:05:16
我将创建一个模型管理器来执行您的初始筛选,然后将视图中的对象的顺序随机化。你想试着采用“胖”模型,“瘦”视图的方法。在您的模型中可以做的越多,就会有更容易的改变。例如,
models.py:
class FooManager(models.Manager):
def get_titles(self):
return super(FooManager, self).get_queryset.order_by('title')
class Foo(models.Model):
title = models.CharField(max_length=120)
objects = FooManager()
def __unicode__(self):
return self.titleviews.py:
def view(request):
get_titles = Foo.objects.get_titles()[:10]
titles = list(get_titles)
random.shuffle(titles)
context = {
'titles': titles
}
return render(request, 'template.html', context)你的模板也变得容易多了。
html:
{% for t in titles %}
{{ t.title }}
{% endfor %}我希望这能帮上忙!祝好运!
https://stackoverflow.com/questions/32211173
复制相似问题