prefetch相关无法在django中工作?

时间:2015-09-25 07:31:38

标签: python django django-models django-templates django-views

def index(request):

    context_dict = {}    

    #products_page_all = ProductsPageAll.objects.all()
    #context_dict['products_page_all'] = products_page_all

    #for x in products_page_all:    
    #    pages = ProductsPageViews.objects.filter(product=x)
    #    context_dict['pages'] = pages

    #for productpage in products_page_all:
    #    for page in productpage.productspageviews_set.all:

    products_page_all = ProductsPageAll.objects.all().prefetch_related('productspageviews_set')
    context_dict['products_page_all_list'] = products_page_all


    return render(request, 'pec/index.html', context_dict)

预取与未提取productspageviews_set的查询相关。 我想知道两种模型的所有对象,然后将其转换为模板。 如果我使用错误的查询,请告诉我。 我很喜欢DJANGO。

这是我的模特。

class ProductsPageAll(models.Model):
    product_name = models.CharField(max_length=500, unique=True) 
    product_image = models.ImageField(upload_to='img/products')
    product_description = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.product_name
        return self.product_description

class ProductsPageViews(models.Model):
    product = models.ForeignKey(ProductsPageAll)
    product_view_image = models.ImageField(upload_to='img/products/views')
    product_view_content = models.CharField(max_length=500)
    product_view_description = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.product_view_content
        return self.product_view_description

这是我呈现我的对象的模板。 但是只有pageviews.product_name工作N低于循环不会发现任何数据 它只给我一个空白列表

{% for pageviews in products_page_all_list %}            
            <div class="row">
                <div class="col-lg-12 text-center">
                    <h3 class="section-subheading text-muted">{{ pageviews.product_name }}</h3>
                </div>
            </div>           
            {% for a in products_page_all_list.productspageviews_set.all %}
            <div class="row text-center">
                <div class="col-sm-4">
                    <img src="{{a.product_view_image.url}}" class="img-responsive" alt="">
                    <h4 class="service-heading">{{a.product_view_content}}</h4>
                    <p class="text-muted">{{a.product_view_description}}</p>
                </div>
            </div>
            {% endfor %}
            <div class="row">
                <div class="col-lg-8 col-lg-offset-2 text-center">
                    <div class="button-div">
                        <a href="/products" class="btn btn-xl">Tell Me More</a>
                    </div>
                </div>
            </div>
            {% endfor %}

1 个答案:

答案 0 :(得分:0)

你在内循环中重复错误的事情。它应该是:

{% for a in pageviews.productspageviews_set.all %}