ManyToManyField出现在模板中?
我有03款书 - > target_readers,书有收藏。ManyToManyField出现在模板中?
class Book(models.Model):
def __unicode__(self):
return "%s (%s)" % (self.title, self.reference)
reference = models.CharField(max_length=100)
title = models.CharField(max_length=200)
collection = models.ForeignKey(Collection)
class Collection(models.Model):
def __unicode__(self):
return self.name
)
name = models.CharField(max_length=200)
target_readers = models.ManyToManyField(Target_Readers, blank=True, null=True)
class Target_Readers(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=200, verbose_name="target reader")
在我的模板我喜欢这个能找到这本书
{% for book in books %}
{{ book.title }}
{{ book.public_price }}
{{ book.collection.target_readers.name }}
的target_readers但我不得到目标读者的任何结果。
任何人都知道我该怎么做?
尝试:
{% for book in books %}
{{ book.title }}
{{ book.public_price }}
{% for reader in book.collection.target_readers %}
{{ reader.name }}
{% endfor %}
{% endfor %}
target_readers
不是一个单一的实体,它是一个列表(尽管其中一个可以只包含一个元素)。
不能正常工作。 – kn3l 2009-10-13 02:31:57
@python - 用什么方式? – 2009-10-13 05:17:34
我认为它应该是:对于book.collection.target_readers.all中的读者 – 2011-10-30 15:03:29
该解决方案为我工作:
{% for book in books %}
{{ book.title }}
{{ book.public_price }}
{{ book.collection.target_readers.all|join:", " }}
{% endfor %}
所以book.collection.target_readers.all
回报目标读者的姓名和join:", "
的列表是串接列表中的内容过滤器“”。
注意:在此示例中,book.collection.target_readers.all
返回名称列表,因为您在0123_函数的Target_Readers类中返回self.name
。
为什么downvote?这是一个措辞清晰,可回答的问题。从我+1。 – 2009-10-12 11:52:11
PS - 为了记录,django模板基本上忽略了'不正确'的标签或者带有不可打印值的标签,所以不是在{{book.collection.target_readers.name}}上抛出错误,而是跳过它。我相信你可以通过在settings.py文件中设置TEMPLATE_DEBUG来告诉它抛出一个错误。更多信息:http://docs.djangoproject.com/en/dev/ref/settings/#template-debug – Jiaaro 2009-10-12 12:21:18