簡體   English   中英

使用 Django 模板中的對象列表

[英]Using a list of objects in Django Template

這是我第一次在這里提問,如果結構不是很好,我深表歉意。 基本上我擁有的是一個名為 Product 的 Model,目前有 7 個產品。 我想從這個 Model 中取出 3 個隨機產品並將它們存儲在一個列表中,然后我想從一個模板中訪問它以顯示現在列表中的 3 個對象。

我嘗試從數據庫中獲取 3 個隨機對象:

 ## Finding 3 random products to show
        all_product_list = list(Product.objects.values_list('name', 'price', 'image'))
        checkout_products = list()
        counter = 3
        num_products = len(all_product_list)

        while counter!= 0:
            random_prod = random.randint(0, num_products - 1)
            checkout_products.append(all_product_list[random_prod])
            counter -= 1

然后在我的模板中,我嘗試按如下方式訪問:

{% for checkout_prod in checkout_products %}
                    <div class="col text-light">
                        {{ checkout_prod.price }}
                    </div>
{% endfor %}

我還在 function 的末尾呈現列表,如下所示:

return render(request, 'cart.html', {'cart_items':cart_items, 'total':total, 'counter':counter,
                                        'data_key': data_key, 'stripe_total':stripe_total,
                                        'description':description, 'before_discount':before_discount,
                                        'difference': difference, 'checkout_products': checkout_products,})

我沒有收到任何錯誤,但頁面上根本沒有顯示任何內容,我們將不勝感激。

謝謝你!

我認為這里的主要問題是使用.values_list(…) [Django-doc]這將生成一個包含元組的查詢集,而不是QuerySet object,因此.price不再存在。

但是你不需要首先使用.values_list(…) ,你可以簡單地獲取 model 對象並使用random.sample(…) [python-doc]來獲取三個元素:

from random import sample

all_product_list = Product.objects.all()
counter = 3
checkout_products = sample(all_products_list, counter)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM