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

huangapple go评论47阅读模式
英文:

How to access Product name and all details from sub Category using Django?

问题

我想从子类别获取产品名称和所有详细信息,我尝试了很多方法,但没有成功

单击子类别时,应显示相关产品,如果有人知道查询,请告诉我

我创建了四个模型
第一个是主类别
第二个是类别
第三个是子类别

类别包含主类别的外键
此外
在子类别中给出了类别的外键

在产品模型中,给出了上述三个模型的外键

我尝试了这个查询Product.objects.all().select_related('main_category').select_related('category').select_related('sub_category')
请告诉我还有它的HTML部分。

英文:

I want to get product name and all its details from sub category, I tried a lot to find how to do it but it didn't work

When clicking on the sub category the related products should appear ,If anyone knows the query please tell me

I have made four models
First Main category
Second category
Third SubCategory

Category contains the foregion key of the main category
Also
In sub category the foregion key of category is given

And in the product model, the foreign key of the above three models is given

I try this query Product.objects.all().select_related('main_category').select_related('category').select_related('sub_category')
Please tell me and its html part too

答案1

得分: 1

为了根据子类别检索产品名称及其所有详细信息,您可以使用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)
    # 其他字段

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

subcategory_id = 1  # 用所需的子类别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>产品名称:</strong> {{ product.name }}<br>
      <strong>主要类别:</strong> {{ product.main_category.name }}<br>
      <strong>类别:</strong> {{ product.category.name }}<br>
      <strong>子类别:</strong> {{ product.sub_category.name }}<br>
      <!-- 根据需要显示其他产品详细信息 -->
    </li>
  {% endfor %}
</ul>

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

英文:

To retrieve the product name and all its details based on the subcategory, you can use the Django ORM and the select_related method. Assuming you have the following models:

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

To fetch the products and their details based on a specific subcategory, you can use the following query:

subcategory_id = 1  # Replace with the desired subcategory ID

products = Product.objects.filter(sub_category_id=subcategory_id).select_related(
    &#39;main_category&#39;, &#39;category&#39;, &#39;sub_category&#39;
)

In the above example, subcategory_id represents the ID of the subcategory for which you want to retrieve the products. Replace it with the actual subcategory ID you are interested in.

The select_related method is used to fetch related fields in a single database query, improving performance. In this case, we specify the related fields to include: main_category, category, and sub_category.

To display the products and their details in HTML, you can iterate over the products queryset in your template. Here's an example of how you can display the product names and related details:

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

In this example, the product names and related details are displayed using template variables ({{ variable_name }}). Adjust the HTML structure and the displayed fields according to your specific requirements.

huangapple
  • 本文由 发表于 2023年6月8日 01:56:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/76425921.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定