【问题标题】:prefetch related not working in django?与预取相关的在 Django 中不起作用?
【发布时间】:2015-12-22 23:35:02
【问题描述】:
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 在 FOR 循环下工作 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 %}

【问题讨论】:

  • 对不起,大喊大叫。

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


【解决方案1】:

你在你的内部循环中迭代了错误的东西。应该是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2018-11-11
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多