我已经浏览过类似问题的其他答案,但似乎无法正常工作。这是我的模型结构:
models.py
class Seller(models.Model):
seller_full_name = models.CharField(max_length=50)
seller_listing_name = models.CharField(max_length=50) <-- I want to display this in template
email = models.EmailField(max_length=50)
date_added = models.DateField(auto_now_add=True)
def __str__(self):
return self.seller_listing_name
# Create your models here.
class Product(models.Model):
...
seller = models.ForeignKey(Seller, on_delete=models.CASCADE, null=True, blank=True)
...
def __str__(self):
return self.product_name
在我看来,我得到了一组查询产品
views.py
def store(request):
products = Product.objects.values().order_by('?') # shuffle order
args = {'products': products}
return render(request, 'store/products-page.html', args)
在模板中,我遍历产品并构建显示商品详细信息的卡片。我还想在每张卡上显示每种产品的卖方的列表名称。我似乎无法在视图中正确获取外键语句,因为它使卖方名称应为空白。
products-page.html
{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
...
<p>
// {{ product.seller.seller_listing_name }} // <-- display sellers name here
</p>
<h4 class="card-title">
<a href="#">{{ product.product_name }}</a>
</h4>
<p>#{{ product.product_id }}</p>
<p>{{ product.description }}</p>
<h5>${{ product.price | floatformat:2 }}</h5>
...
</div>
{% endfor %}
我已经对此困扰了一段时间,但似乎无法理解,所以任何帮助都很棒!
编辑我看过的一些链接:
Django:如何通过模板通过ForeignKey连接数据?
解决方案由于以下注释,我没有意识到我是使用.order_by('?')将产品转换为字典的-这导致数据结构无法保持我的关系,因此我无法访问我的FK。
views.py
def store(request):
products = Product.objects.order_by('?') # REMOVE .values()
args = {'products': products}
return render(request, 'store/products-page.html', args)
products-page.html
{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
...
<p>
// {{ product.seller.seller_listing_name }} // <-- display sellers name here
</p>
<h4 class="card-title">
<a href="#">{{ product.product_name }}</a>
</h4>
<p>#{{ product.product_id }}</p>
<p>{{ product.description }}</p>
<h5>${{ product.price | floatformat:2 }}</h5>
...
</div>
{% endfor %}
如果是ForeignKey,则需要添加类似
{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
[...]
{% for seller in product.seller_set.all %}
<p>
// {{ seller.seller_listing_name }} // <-- display sellers name here
</p>
{% endfor %}
<h4 class="card-title">
<a href="#">{{ product.product_name }}</a>
</h4>
[...]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句