djangoでFKを使用して別のモデルとの関係を設定しようとしていますが、djangoテンプレートでFK関連のモデルフィールドを呼び出すことができません。私が "provider.name"を呼び出すとき、テンプレートでは、結果として "None"が表示されます。私は5種類のサプライヤをリストアップしており、管理者から見ることができます。私はプロバイダを持っていると私は以下のような製品だ:私はそれを呼び出しています方法があるテンプレートでリレーショナルモデルのテンプレート内のDjango QuerySet
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"
を示して結果。私は別のテンプレートでプロバイダーに電話しようとしています。それ自体のList/Detailジェネリックビューではうまく動作します。私は別のアプリテンプレートでそれを呼び出そうとしています。お知らせ下さい。
更新................私はModelManagerか、単に使用していないとして
はヒューという音検索エンジンのための私のsearch.htmlのが{% 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>
を含み
モデルにあらかじめ定義されたデフォルトのマネージャーを使用します。管理者は、このような何のメソッドを持っていないので、それはNone
を返すように、あなたは関連マネージャを呼び出しprovider
を呼び出す
def get_provider(self):
item = self.providers.all()
return item
私はこれを試してみましたが、私はそう "の下で今のいずれかのマネージャーを使用していないとして、 Product "app私は単にself.providers.all()を返したget_providerのための関数を追加しました。テンプレートで質問を更新しています。私はwhooshの検索エンジンコードを実装しているので、そのsearch.htmlにはどのようにコードがリストされているかを見ることができます。 –