【问题标题】:Django 1.6 Getting data from two models into one viewDjango 1.6 将数据从两个模型中获取到一个视图中
【发布时间】:2014-04-04 02:19:09
【问题描述】:

有两个模型,需要同时在一个页面上显示它们。我知道我需要一个视图,其中包含两个模型。

哈哈

这是我得到的:

def inventory(request):
    products = Product3.objects.all()

    productinfo = {
    "product_detail": products
    }
    return render_to_response('inventory.html', productinfo, context_instance=RequestContext(request))

def itemdetailpage(request, id):
    property = Product3.objects.get(pk=id)
    property1 = property.images.all()
    itemin = {"itemdetail": property1 }
    return render_to_response('details.html', itemin, context_instance=RequestContext(request))

如何将这些数据整合到一个视图中?所以我可以在一个模板中显示它们的两个内容,参数部分是 itemdetail 页面代码。?

视图中的解决方案如下: 我在发布这篇文章大约一个小时后发现了这一点,感谢 Dan 的回复,一切都完全正确:

def itemdetailpage(request, id):
    property = Product3.objects.get(pk=id)
    property1 = property.images.all()
    itemin = {'property': property, 'imagedetail': property1}
    return render_to_response('details.html', itemin, context_instance=RequestContext(request))

【问题讨论】:

    标签: html django templates views models


    【解决方案1】:

    您已经拥有所需的所有信息。您知道如何使用product.images.all() 获取与项目相关的图像。当您遍历产品时,您可以在模板中简单地执行此操作;你根本不需要第二个视图。

    {% for product in products %}
        {{ product.name }}
        {% for image in product.images.all %}
            {{ image.image }}
        {% endfor %}
    {% end for %}
    

    【讨论】:

    • def itemdetailpage(request, id): property = Product3.objects.get(pk=id) property1 = property.images.all() itemin = {'property': property, 'imagedetail': property1} return render_to_response('details.html', itemin, context_instance=RequestContext(request))
    【解决方案2】:

    如果您绝对需要这两种视图,您可以进行 AJAX 调用来更新您的页面内容。如果您可以随意更改代码,为什么不从两个视图之一返回所有需要的数据?

    附注:您应该使您的代码更具可读性。

    【讨论】:

    • 只有一个模板,我将如何将 itemdetailpage 和库存放入一个 url?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2021-02-26
    相关资源
    最近更新 更多