簡體   English   中英

無法在模板視圖中使用“ categories.products .all”訪問數據。 帶外鍵的Django模型

[英]Not able to access data using 'categories.products .all ' in template view. Django Models with foreign key

我有使用外鍵建立關系的模型。

class Cat1(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length = 100)

    def __str__(self):
        return self.name


class Product(models.Model):
    name = models.CharField(max_length=50)
    productId = models.AutoField(max_length=50,primary_key=True)
    productType = models.CharField(max_length=50)
    matType = models.CharField(max_length=100,default='Use comma , to seperate multiple materials') 
    seller = models.ForeignKey(User, related_name='sellers',on_delete=models.CASCADE,default='NA')
    cat_1 = models.ForeignKey(Cat1,related_name='catlevel1',on_delete=models.CASCADE,default='NA')

然后,我對頁面有意見。 我需要顯示我單擊過的類別中的所有產品。 我的看法是:

def cat_products(request,pk):
   categories = get_object_or_404(Cat1, pk=pk) #here the categories get the category i clicked on homepage.
   products = Product.objects.all()
   return render(request, 'products.html', {'categories':categories,'products':products})

然后products.html是:

<!--Full Code not shown for easy understanding-->
{% for prod in categories.products.all %}

       {{categories.name}} 
        <tr>
          <td>{{ prod.name }}</td>
          <td>{{ prod.matType }}</td>
          <td>0</td>
          <td>0</td>
          <td>0</td>
        </tr>
      {% endfor %}

網頁是category.products.all的for循環 因此,基本上類別是可用於訪問當前類別的名稱。產品是所有產品的列表。

我已經嘗試了上面的代碼,但沒有結果。 現在,下面的代碼顯示了所有產品對象。

<!--Full Code not shown for easy understanding-->
{% for prod in products %}

       {{categories.name}} 
        <tr>
          <td>{{ prod.name }}</td>
          <td>{{ prod.matType }}</td>
          <td>0</td>
          <td>0</td>
          <td>0</td>
        </tr>
      {% endfor %}

for循環中僅包含“產品”的網頁

但是通過這種方式,它可以顯示所有產品,而無需考慮類別。 因此,“男士”類別中的此派對襯衫也顯示在“女士”中。

婦女類產品網頁

我嘗試只打印所有產品{% for prod in products %} {{categories.name}}以上代碼中的行顯示了類的名稱。 可以正常工作,沒有問題。

后端能夠訪問數據庫沒有問題,但是我無法弄清模板部分。這是產品和作為Men存儲在product對象中的類別。 帶有產品詳細信息的Django管理面板。

我應該能夠在“男士”類別中看到“男士”類別產品,在“女士”類別中看到“女士”商品。

您需要使用catlevel1而不是產品:

{% for prod in categories.catlevel1.all %}

   {{categories.name}} 
    <tr>
      <td>{{ prod.name }}</td>
      <td>{{ prod.matType }}</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  {% endfor %}

因為你已經定義related_namecatlevel1當你創建的ForeignKey的關系, ProductCat1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM