【发布时间】:2016-11-19 14:22:12
【问题描述】:
我正在尝试在 django 中使用 FK 与另一个模型建立关系,但我无法在 django 模板中调用与 FK 相关的模型字段。在模板中,当我调用“provider.name”时,结果显示“无”。我确实列出了 5 个不同的供应商,可以从管理员那里看到。我有供应商,我得到了如下产品:
class Product(models.Model):
title = models.CharField(max_length=500)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(max_digits=20, decimal_places=2)
sku = models.CharField(null=True, max_length=100)
url = models.URLField(blank=True)
slug = models.SlugField(unique=True)
providers = models.ManyToManyField('Provider', blank=True)
def __unicode__(self):
return self.title
class Provider(models.Model):
name = models.CharField(max_length=200)
description = models.TextField(null=True, blank=True)
logo = models.ImageField(upload_to='products/')
shipping_method = models.CharField(max_length=250)
shipping_time = models.CharField(max_length=250)
return_policy = models.CharField(max_length=200)
free_delivery = models.CharField(max_length=200)
customer_service_number = models.CharField(max_length=200)
shipping_charges = models.CharField(max_length=200)
def __unicode__(self):
return self.name
在模板中我称之为:
{% with provider=object.providers %}
{{ provider.name }}
{% endwith %}
结果显示"None"。我正在尝试在不同的模板中调用提供者。在它自己的列表/详细信息通用视图中,它工作得很好。我试图在不同的应用程序模板中调用它。请指教。
更新........
我的 search.html for whoosh 搜索引擎包括
{% for result in page.object_list %}
<div class="col-lg-1-5 col-md-3 col-sm-4 col-xs-12">
<div class="pbox">
<div class="photo">
<a href="{{ result.object.get_absolute_url }}"><img src="{{ result.object.get_image_url }}" alt="product"></a>
</div>
<div class="info">
<div class="url">
name
{% for item in result.object.providers.all %}
{{ result.provider.name }}
{% endfor %}
</div>
<div class="description">
{{ result.object.description|truncatewords:7 }}
</div>
<div class="price">
{{ result.object.price|intcomma }}
</div>
</div>
</div>
</div>
因为我没有使用任何 ModelManager 或仅使用为模型预定义的默认管理器。我在 Product App 模型下添加了一行代码,如下所示:
def get_provider(self):
item = self.providers.all()
return item
【问题讨论】:
标签: python django django-templates django-template-filters