获取不同型号的精选图片

时间:2014-11-21 17:24:44

标签: django python-3.x

我有2个模型对象,Business& BusinessImage如此,列出了views和index.html。我正在尝试列出该商家的精选图片,但它并没有发生。我收到以下错误:

  

'查询集'对象没有属性' 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 %}

1 个答案:

答案 0 :(得分:3)

businessimage_setBusiness实例的属性,但您尝试将其作为查询集的属性(即商家列表)进行访问。如果您的目标只是为了能够访问模板中每个商家的图片,则可以完全忽略images。相反,您的模板将具有:

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

(虽然考虑prefetch_related效率。)