2014-11-21 47 views
1

我有2個模型對象,商業& BusinessImage as,與views和index.html一起列出。我試圖列出該公司的精選圖片,但並未發生。我收到以下錯誤:獲取來自不同模型的精選圖片

'QuerySet' object has no attribute 'businessimage_set'

如何獲取業務精選圖像的列表?

業務

class Business(models.Model): 
    name = models.CharField("Name", max_length=70, default="Business Name") 
    slug = models.SlugField() 
    description = models.TextField("About", max_length=400) 
    category = models.ManyToManyField(Category, verbose_name="Categories", blank=True) 
    order = models.IntegerField("Order", default=0) 
    claimed = models.BooleanField("Claimed", default=False) 
    featured = models.BooleanField("Featured", default=False) 

    class Meta: 
     ordering = ['order'] 
     verbose_name = "Business" 
     verbose_name_plural = "Businesses" 

    def __str__(self): 
     return self.name 

BusinessImage

class BusinessImage(models.Model): 
    business = models.ForeignKey(Business) 
    image = models.ImageField(upload_to="images/business") 
    title = models.CharField(max_length=120) 
    featured = models.BooleanField(default=False) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __str__(self): 
     return self.title 

view.py

from .models import Business, BusinessImage 

def index_view(request): 
    latest_business_list = Business.objects.all() 
    images = latest_business_list.businessimage_set.all() 
    template = loader.get_template('index.html') 
    context = RequestContext(request, { 
     'latest_business_list': latest_business_list, 
     'images': images, 
    }) 
    return HttpResponse(template.render(context)) 

的index.html

{% block content %} 

<div class="text-center business_title"> 
    <h2>Featured</h2> 
</div> 

{% if latest_business_list %} 
{% for business in latest_business_list|slice:":4" %} 
{% if business.active %} 
<div class="col-sm-6 col-md-3"> 
    <li><a href="business/{{ business.slug }}/">{{ business.name }}</a></li> 
{% for image in latest_business_list.businessimage_set.all %} 
     {% if image.featured %} 
     <a href="{% url 'single_product' product.slug %}"> 
      <img src="{{MEDIA_URL}}{{image.image}}" alt="{{image}}"> 
     </a> 
     {% endif %} 
{% endfor %} 
</div> 
{% endif %} 
{% endfor %} 
{% endif %} 
{% endblock %} 

回答

3

businessimage_setBusiness實例的屬性,但是你要訪問它作爲一個查詢集的屬性(即企業名單)。如果您的目標只是爲了能夠訪問模板中每個業務的圖片,則完全可以省略images。相反,你的模板將有:

{% for image in business.businessimage_set.all %} 

(雖然考慮prefetch_related的效率。)