2015-10-08 57 views
1

我已經閱讀了這個,但我找不到解決我的問題的東西。如何在ListView中顯示ForeignKey對象 - Django

我試圖用縮略圖顯示產品列表。 表格中的縮略圖字段不返回任何網址,但僅返回具有縮略圖的產品的斷開圖像鏈接

的產品清單使用一個ListView,我可以顯示在產品(一的DetailView)的詳細視圖,它使用相同的模板代碼縮略圖精細

什麼我需要做的,以顯示ListView中的每個產品的縮略圖...即。我必須如何更改我的查詢集才能將縮略圖與產品一起傳遞到模板中?

查看

class ProductView(generic.ListView): 
    template_name = 'product/product.html' 
    context_object_name = 'product_list' 

    def get_queryset(self): 
     return Product.objects.all() 

模板

{% for product in product_list %} 
     <tr> 
      <td><a href="/product/{{ product.id }}/">{{ product.title }}</a></td> 
      <td> {% if product.thumbnails.all %} 
        <img src="{{ product.thumbnail.url }}" alt="..."> 
        {% endif %} 
      </td> 
      <td>{{ product.category }}</td> 
      <td>{{ product.subcategory }}</td> 
      <td>{{ product.status }}</td> 
      <td>{{ product.date_added }}</td> 
    {% endfor %} 

型號

class ProductThumbnail(models.Model): 
    product = models.ForeignKey(Product, default=None, related_name='thumbnails') 
    thumbnail = models.ImageField(upload_to='thumbnails/', 
          verbose_name='thumbnail', blank=True,) 

請讓我知道是否需要任何更多的信息。

+0

你想吃點什麼縮略圖表中顯示,如果該產品有一個以上的縮略圖? – baxeico

+0

每個產品只有一個縮略圖 – timg

回答

1

如果需要循環每個產品只有一個縮略圖,您應該添加字段

thumbnail = models.ImageField(upload_to='thumbnails/', 
         verbose_name='thumbnail', blank=True) 

直接對模型Product和溝ProductThumbnail模型。您設計數據庫的方式可以讓每個產品具有更多縮略圖(一對多關係),但這會使您的代碼變得複雜。

如果thumbnailProduct模型的領域,你可以做簡單:

{% if product.thumbnail %} 
    <img src="{{ product.thumbnail.url }}" alt="..."> 
{% endif %} 
+0

如果縮略圖是產品模型的一部分,我無法獲得它的工作,我只是無法獲取圖像上傳 - 在我看來,我保存了一個產品和一些formset圖像。 Theset中的圖像上傳正常,但產品表單中的縮略圖不會上傳。任何想法我可能會失蹤? – timg

+0

產品表單是使用enctype =「multipart/form-data」定義的嗎? – baxeico

+0

是的,並在我看來product_form = AddEditProductForm(request.POST,request.FILES),檢查is_valid()和。save() – timg

1

{% if product.thumbnails.all %}應該{% if product.thumbnail %}

{% if product.thumbnails.all %}只會意義,如果product.thumbnails是反向關係

編輯:我誤解了問題

您可以通過縮略圖{% for thumbnail in product.thumbnails.all %}

+0

使用此代碼,不會顯示損壞的圖像鏈接,也不會顯示縮略圖。 – timg

+0

product.thumbnails是一個反向關係,因爲ProductThumbnail有一個ForeignKey到模型Product with related_name ='thumbnails' – baxeico

+0

道歉,我誤解了這個問題。如果每個產品只有1個,爲什麼縮略圖是逆向參考? –

相關問題