Django无法获取模板中相关模型数据的值

Django无法获取模板中相关模型数据的值,django,django-models,django-queryset,Django,Django Models,Django Queryset,我想展示下面每个帖子的喜欢者 以下是模型: class Post(models.Model): title = models.CharField(max_length=75, null=True, blank=True) created = models.DateTimeField(auto_now_add=True) creator = models.ForeignKey(User, null=True) topic = models.ForeignKey(To

我想展示下面每个帖子的喜欢者

以下是模型:

class Post(models.Model):
    title = models.CharField(max_length=75, null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    creator = models.ForeignKey(User, null=True)
    topic = models.ForeignKey(Topic)
    body = models.TextField(max_length=10000)

    def likers(self):
        return self.postlike_set.all()


class PostLike(models.Model):
    post = models.ForeignKey(Post)
    liker = models.ForeignKey(User, null=True, related_name="post_liker")
在模板中,我有:

  {% for post in posts %}

   <div>{{ post.created |timesince }}</div>
   <div>{{ post.creator }}</div>
   <div>{{ post.title }}</div>
   <div>{{ post.body }}</div> 
   <ul>
      {% for liker in post.likers %}
           <li><a href="/path/to/profile/{{ liker.name}}">{{ liker.name}}</a></li> 
      {% endfor %}
   </ul>

   {% endfor %} 
{%for posts in posts%}
{{post.created | timesince}}
{{post.creator}}
{{post.title}}
{{post.body}}
    {post.likers%中liker的百分比为%1}
  • {%endfor%}
{%endfor%}
但模板中没有显示任何内容


如何修复此问题?

您的
likers
方法返回
PostLike
对象的查询集。如果您需要喜欢者的用户名,则需要按照
liker
外键进入
User
模型

您还有
liker.name
,除非您的
User
模型有
name
字段,否则它不会工作。使用类似于
liker.username
liker.first\u name

  {% for post_liker in post.likers %}
       <li><a href="/path/to/profile/{{ post_liker.liker.username }}">{{ post_liker.liker.username }}</a></li> 
  {% endfor %}
这样,您就不需要模型中的
likers
方法,您的模板将简化为:

  {% for liker in post.likers.all %}
       <li><a href="/path/to/profile/{{ liker.name }}">{{ liker.username }}</a></li> 
  {% endfor %}
{post.likers.all%中liker的%
  • {%endfor%}
      {% for liker in post.likers.all %}
           <li><a href="/path/to/profile/{{ liker.name }}">{{ liker.username }}</a></li> 
      {% endfor %}