首页 > 解决方案 > 我正在使用 python django 和 postgresql 为我的网站创建一个产品页面。我在比较两个表中的字段时遇到问题

问题描述

目前在数据库中我有两个表 1.Category(id, type) 和 2.Products(id,category,name,price)。我只想在“类别类型”与“产品类别”相同时显示产品。这就是我正在进行的操作,但它显示错误。

                         {% for i in types %}
                         {% for j in prods %}

                            {% if i.type== j.category %}

                            <div class="product-img">
                                <img src="{{j.disimage.url}}" alt="">
                                
                            </div>
                            <div class="product-caption">
                                
                                <h4><a href="#">{{j.name}}</a></h4>
                                <div class="price">
                                    <ul>
                                        <li>RS {{j.currentprice}}</li>
                                        <li class="discount">RS {{j.originalprice}}</li>
                                    </ul>
                                </div>
                            </div>
                            {% endif %}
                            {% endfor %}
                            {% endfor %}
                        

此行显示错误。{% if i.type== j.category %}

这是models.py

  from django.db import models
  from datetime import datetime
  from django.utils import timezone

  class Category(models.Model):
      type=models.CharField(max_length=30)

  class Product(models.Model):
      category=models.CharField(max_length=30)

      name=models.CharField(max_length=30)
      currentprice=models.IntegerField()
      disimage=models.ImageField(upload_to='pics')

这是我得到的错误:无法解析剩余部分:'==' from 'i.type=='

请告诉我如何实现它。谢谢

标签: pythondjangopostgresql

解决方案


如果使用关系,它将在将来很有用。以下是如何使用 ManyToManyField 关系:

  from django.db import models
  from datetime import datetime
  from django.utils import timezone

  class Category(models.Model):
      type=models.CharField(max_length=30)

  class Product(models.Model):
      category=models.ManyToManyField(Category, ...., related_name='products')

      name=models.CharField(max_length=30)
      currentprice=models.IntegerField()
      disimage=models.ImageField(upload_to='pics')

在您的模板中:

{% for type in types %}
  {% for each_product in type.products.all %}
    <div class="product-img">
      <img src="{{each_product.disimage.url}}" alt="">    
    </div>
    <div class="product-caption">
      <h4><a href="#">{{each_product.name}}</a></h4>
        <div class="price">
          <ul>
            <li>RS {{each_product.currentprice}}</li>
            <li class="discount">RS {{each_product.originalprice}}</li>
          </ul>
        </div>
     </div>
  {% endfor %}
{% endfor %}

通常如果我们不使用related_name,我们使用小写(模型名称)+ _set,如下所示:

type.product_set.all

推荐阅读