【发布时间】:2020-09-02 00:57:25
【问题描述】:
我查看了类似问题的其他答案,但我似乎无法让它发挥作用。这是我的模型结构:
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: How to get data connected by ForeignKey via Template?
Django foreign key relation in template
How to access foreign key table's data in Django templates?
解决方案 感谢下面的 cmets,我没有意识到我正在使用 .order_by('?') 将产品转换为字典 - 这导致数据结构无法保持我的关系,因此我无法访问我的外援。
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 %}
【问题讨论】:
标签: python django django-models django-templates foreign-keys