如何打印链接到Django中特定模型的ForeignKey模型?

时间:2019-02-18 02:59:43

标签: django django-models

我正在使用Django模型保存用户上传的图像。我希望每个图像都存储在productimage模型中,该模型是产品模型的外键模型,而productmodel模型是用户模型的外键模型。我的意思是:

用户----->产品------>产品图片

我正在使用for循环从产品模型中打印出所有用户的产品。然后,对于该产品模型中的每个产品,应打印出与该特定产品模型链接的productimage ForeignKey模型。但是,当我返回productimage模型时,它将返回所有productimage模型,而不是仅返回链接到该特定产品模型的模型。

为了进一步澄清我的问题,我的意思是说,对于ProductA,打印出所有与ProductA关联的Productimage,但是与其将所有打印出来的产品打印出来,不考虑与它们链接到的是哪种产品型号,而是打印出所有Productimage。

models.py:
  class product(models.Model):
     user = models.ForeignKey(User, on_delete=models.CASCADE)
     product_title =  models.CharField(max_length=100, blank=True)
     product_price =  models.CharField(max_length=30, blank=True)
     product_description =  models.CharField(max_length=1000, blank=True)

 class productimage(models.Model):
     product = models.ForeignKey(product, on_delete=models.CASCADE)
     product_images = models.FileField(blank=True)


views.py:
 def products(request):
     template = loader.get_template("main/products.html")
     products = request.user.product_set.all()
     for product in products:
         productsimages = product.productimage_set.all()
         for productimage in productsimages:
             imageurl = productimage.product_images.url
     context = {
         "products" : products,
         "productsimages" : productsimages,
         "imageurl" : imageurl,
         }
     return HttpResponse(template.render(context,request))




 Html template:
   <div  id="noproducts">
   <!-- <img class="options" src="/static/main/images/box2.png"/>
   <h2>It seems like you don't have any products</h2> -->
   {% for product in products %}
   <div class="col-sm-12 col-lg-3" id="holla">
       <div id="imgcontainer">
         <img id="img" src="{{ imageurl }}">
       </div>
       <p>{{ product.product_title }}</p>
       <p>₦{{ product.product_price }}</p>
       <p>{{ product.product_description }}</p>
   </div>
   {% endfor %}
 </div>

2 个答案:

答案 0 :(得分:2)

在forloop中提供您可以使用的产品:

pip install django-mssql

并从上下文中删除产品图片

如果仍然没有图像显示,请在控制台中检查是否显示了这些img标签;如果是,则您对图像的查找不正确,但这是另一个问题

答案 1 :(得分:1)

在产品内部添加另一个循环以显示其图像。

{% for product in products %}
   <div class="col-sm-12 col-lg-3" id="holla">
       <div id="imgcontainer">
         {%for product_image in product.productimage_set.all %}
           <img id="img" src="{{ product_image.product_images.url }}">
         {% endfor %}
       </div>
       <p>{{ product.product_title }}</p>
       <p>₦{{ product.product_price }}</p>
       <p>{{ product.product_description }}</p>
   </div>
{% endfor %}