sqlite 如何使用Django从子类别访问产品名称和所有详细信息?

e7arh2l6  于 2023-06-23  发布在  SQLite
关注(0)|答案(1)|浏览(111)

我想得到产品名称和它的所有细节从子类别,我尝试了很多,以找到如何做到这一点,但它没有工作
当点击子类别相关产品应出现,如果有人知道查询请告诉我
我做了四个模型第一个主要类别第二个类别第三个子类别
Category包含主category的foregion键。在子category中,也给出了category的foregion键
并在产品模型中,给出了上述三种模型的外键
我尝试这个查询Product.objects.all().select_related('main_category').select_related('category ').select_related('sub_category')请告诉我和它的html部分太

jljoyd4f

jljoyd4f1#

要根据子类别检索产品名称及其所有详细信息,可以使用Django ORM和select_related方法。假设您有以下模型:

class MainCategory(models.Model):
    name = models.CharField(max_length=100)

class Category(models.Model):
    name = models.CharField(max_length=100)
    main_category = models.ForeignKey(MainCategory, on_delete=models.CASCADE)

class SubCategory(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

class Product(models.Model):
    name = models.CharField(max_length=100)
    main_category = models.ForeignKey(MainCategory, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    sub_category = models.ForeignKey(SubCategory, on_delete=models.CASCADE)
    # other fields

要根据特定子类别获取产品及其详细信息,可以使用以下查询:

subcategory_id = 1  # Replace with the desired subcategory ID

products = Product.objects.filter(sub_category_id=subcategory_id).select_related(
    'main_category', 'category', 'sub_category'
)

在上面的示例中,subcategory_id表示要检索产品的子类别的ID。将其替换为您感兴趣的实际子类别ID。
select_related方法用于在单个数据库查询中获取相关字段,从而提高性能。在本例中,我们指定要包含的相关字段:main_categorycategorysub_category
要在HTML中显示产品及其详细信息,可以迭代模板中的产品查询集。下面是显示产品名称和相关详细信息的示例:

<ul>
  {% for product in products %}
    <li>
      <strong>Product Name:</strong> {{ product.name }}<br>
      <strong>Main Category:</strong> {{ product.main_category.name }}<br>
      <strong>Category:</strong> {{ product.category.name }}<br>
      <strong>Subcategory:</strong> {{ product.sub_category.name }}<br>
      <!-- Display other product details as needed -->
    </li>
  {% endfor %}
</ul>

在本例中,产品名称和相关详细信息使用模板变量({{ variable_name }})显示。根据您的特定要求调整HTML结构和显示的字段。

相关问题