【问题标题】:Display django field choices in a particular order以特定顺序显示 django 字段选择
【发布时间】:2021-08-23 08:27:06
【问题描述】:

我正在使用 django 模型,其中一个字符域有一个选择列表,例如

class Ster(models.Model):
    STER_PRODUCTS_CATEGORY = [
        ('Steam', 'Steam'),
        ('ETO', 'ETO'),
        ('Plasma', 'Plasma'),
        ('LTSF', 'LTSF'),
        ('Heat', 'Heat')
    ]
    ster_prod_name = models.CharField(max_length=100)
    ster_prod_category = models.CharField(
        max_length=100, choices=STER_PRODUCTS_CATEGORY, default='None')

每当我将项目添加到任何类别时,该特定类别都会首先显示在网页上。
例如,如果我将一个项目添加到热类别,则首先显示该类别。
我正在遍历列表。我的 views.py 函数如下所示

ster_catprods = Ster.objects.values('ster_prod_category', 'id')
ster_cats = {ster_item['ster_prod_category']
                 for ster_item in ster_catprods}
for ster_cat in ster_cats:
        ster_prod = Ster.objects.filter(ster_prod_category=ster_cat)
        m = len(ster_prod)
        mSlides = m // 4 + ceil((m / 4) - (m // 4))
        ster_prods.append([ster_prod, range(1, mSlides), mSlides])

我的HTML模板sn-p是这样的

<section class="container">
    <h4 style="margin: 1em auto">1.STER</h4>
    <div class="row">
        {% for p,range,mSlides in ster_prods %}
        <div class="col-xs-12 col-sm-6 col-md-4 col-lg-4 col-xl-4" data-aos="zoom-in-up" style="margin: 1em auto">
            <h4 class="category-title my-4">{{p.0.ster_prod_category | safe}}</h4>
            {% for i in p %}
            <h6 class="product_title">{{i.ster_prod_name | safe }}</h6></a>
            {% endfor %}
        </div>
        {% endfor %}
    </div>
</section>

如何按照我想要的方式以特定顺序显示类别?
我想要的顺序:
蒸汽
ETO
等离子
LTSF

【问题讨论】:

    标签: django django-models django-views django-templates


    【解决方案1】:

    问题是.objects.values,因为它与数据库联系。您可以循环查找列表Ster.STER_PRODUCTS_CATEGORY,这将保持顺序。

    【讨论】:

    • 这样做会给我错误TypeError: 'list' object is not callable@mkalioby
    • 在哪一行??
    • 如果我将 .objects.values 替换为 Ster.STER_PRODUCTS_CATEGORY,则显示上述错误。 @mkalioboy
    猜你喜欢
    • 2016-08-06
    • 2018-12-30
    • 2016-07-06
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多