Django 1.6将两个模型的数据转换为一个视图

时间:2014-03-03 06:15:13

标签: html django templates views models

有两个模型,需要同时将它们同时放在一个页面上。我知道我需要一个带有两个模型的视图。

洛尔

继续我得到了什么:

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))

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

如果您绝对需要两个视图,则可以进行AJAX调用以更新页面内容。如果您可以自由更改代码,为什么不从其中一个视图返回所有需要的数据?

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