首页 > 解决方案 > 如何在 django-models 中以特定/自定义的方式订购数据?

问题描述

这是我的文件
models.py

from django.db import models
from django.urls import reverse


class Product(models.Model):
    PRODUCTS_CATEGORY = [
        ('None', 'None'),
        ('Sterilisation', 'Sterilisation'),
        ('Cleaning Chemistry', 'Cleaning Chemistry'),
        ('Bacterial Barrier', 'Bacterial Barrier'),
        ('Waste Management', 'Waste Management'),
        ('Instrument Tracking', 'Instrument Tracking'),
        ('Validation', 'Validation')
    ]
    prod_id = models.AutoField
    prod_name = models.CharField(max_length=100)
    prod_category = models.CharField(
        max_length=100, choices=PRODUCTS_CATEGORY, default='None')
    prod_desc = models.TextField()
    prod_img = models.ImageField(upload_to='product_images')
    slug = models.SlugField(null=True, blank=True)

    def __str__(self):
        return self.prod_name

视图.py
def product(request):
    allProds = []
    ster_prods = []
    catprods = Product.objects.values('prod_category', 'id')

    cats = {item['prod_category'] for item in catprods}

    for cat in cats:
        prod = Product.objects.filter(prod_category=cat)
        prod = prod.order_by('-prod_name')
        # print('prod is', prod[0])
        n = len(prod)
        nSlides = n // 4 + ceil((n / 4) - (n // 4))
        allProds.append([prod, range(1, nSlides), nSlides])

    params = {'allProds': allProds,
              'ster_prods': ster_prods}
    return render(request, 'website/products.html', params)

此代码显示以下视图:

类别是随机顺序的。即每次刷新页面/添加产品时顺序都会更改。
你们都可以帮我获得按我想要的特定顺序而不是随机顺序列出的类别吗?我想要的顺序是

  1. 消毒
    • 产品一
    • 产品 2
    • 产品 3
  2. 清洁化学
    • 产品一
    • 产品 2
    • 产品 3
  3. 细菌屏障
    • 产品一
    • 产品 2
    • 产品 3
  4. 仪器跟踪
    • 产品一
    • 产品 2
    • 产品 3
  5. 废物管理
    • 产品一
    • 产品 2
    • 产品 3
  6. 验证
    • 产品一
    • 产品 2
    • 产品 3

标签: pythondjangodjango-modelsdjango-views

解决方案


推荐阅读