首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环随机序的django确定

循环随机序的django确定
EN

Stack Overflow用户
提问于 2015-08-25 18:13:10
回答 1查看 835关注 0票数 0

我想有一个标签列表的10个主要标签,但显示的随机顺序,因为字体的重量将决定他们的重量。

首先,我订购对象,得到10个标签,而不是我使用洗牌随机排序。到目前为止它起作用了。我现在的问题是使用{{forloop.counter0} in模板,它以随机顺序输出下面的代码:

代码语言:javascript
复制
    <tr>
        <td class="tag-0">Tag3</td>
    </tr>
    <tr>
        <td class="tag-1">Tag1</td>
    </tr>
    <tr>
        <td class="tag-2">Tag2</td>
    </tr>

相反,我希望是这样的:

代码语言:javascript
复制
<tr>
    <td class="tag-2">Tag3</td>
</tr>
<tr>
    <td class="tag-0">Tag1</td>
</tr>
<tr>
    <td class="tag-1">Tag2</td>
</tr>

模板:

代码语言:javascript
复制
{% for t in tags %}
    <tr>
        <td class="tag-{{forloop.counter0}}">{{t.title}}</td>
    </tr>
{% endfor %}

意见:

代码语言:javascript
复制
tags = list(Model.objects.order_by('title')[:10])
random.shuffle(tags)
EN

回答 1

Stack Overflow用户

发布于 2015-08-25 19:05:16

我将创建一个模型管理器来执行您的初始筛选,然后将视图中的对象的顺序随机化。你想试着采用“胖”模型,“瘦”视图的方法。在您的模型中可以做的越多,就会有更容易的改变。例如,

models.py:

代码语言:javascript
复制
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.title

views.py:

代码语言:javascript
复制
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:

代码语言:javascript
复制
{% for t in titles %}
    {{ t.title }}
{% endfor %}

我希望这能帮上忙!祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32211173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档