我有03个模型书 - > target_readers和book有收集。
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")
在我的模板中,我喜欢这样来获取本书的target_readers
{% for book in books %}
{{ book.title }}
{{ book.public_price }}
{{ book.collection.target_readers.name }}
但我没有得到目标读者的任何结果。
任何人都知道我该怎么做?
答案 0 :(得分:4)
尝试:
{% for book in books %}
{{ book.title }}
{{ book.public_price }}
{% for reader in book.collection.target_readers %}
{{ reader.name }}
{% endfor %}
{% endfor %}
target_readers
不是单个实体,它是一个列表(虽然可能只包含一个元素)。
答案 1 :(得分:0)
这个解决方案对我有用:
{% 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
返回名称列表,因为您在Target_Readers类的self.name
函数中返回__unicode__(self)
。