Python 来自模板的Django外键值
我已经看过了类似问题的其他答案,但我似乎无法让它起作用。以下是我的模型结构:Python 来自模板的Django外键值,python,django,django-models,django-templates,foreign-keys,Python,Django,Django Models,Django Templates,Foreign Keys,我已经看过了类似问题的其他答案,但我似乎无法让它起作用。以下是我的模型结构: 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 = model
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
在模板中,我遍历产品并构建显示项目详细信息的卡片。我还想在每张卡片上显示每种产品的卖家名称。我似乎无法在视图中获得正确的外键语句,因为它在卖方名称应该出现的地方呈现为空
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 %}
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 %}
{%用于产品中的产品%}
...
//{{product.seller.seller_listing_name}}/如果是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>
[...]
{%用于产品中的产品%}
[...]
{product.seller\u set.all%中的卖方为%s}
//{{seller.seller\u listing\u name}}//我尝试过这个方法,但它从未进入for循环,因此p标记从未呈现。我刚刚再试了一次,同样的事情发生了。当黄色的调试屏幕打开时,我可以看到包含产品查询集的本地变量。因为它有“卖方id”,正确引用了我想要的卖方名称。也许有一种方法可以使用ID,但我必须以另一种方式获取名称?顺便问一下,为什么在视图中使用products=Product.objects.values().order\u by('?')
?你从产品模型中创建dict?是的,我希望每次视图渲染时产品的顺序都会改变。我没有意识到这可能与此有关,因为没有其他任何东西受到影响,但现在我认为这可能是。。。我可以尝试删除它,看看它是否有帮助性Product.objects.order\u by('?')
{% 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 %}
{% 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>
[...]