代码之家  ›  专栏  ›  技术社区  ›  Migdotcom

如何筛选唯一用户的信息以显示在其自己的url上

  •  0
  • Migdotcom  · 技术社区  · 7 年前

    这是我的视图、模型和Html。我试图在django中创建一个用户配置文件页面。我只需要查询和拉取请求的信息。配置文件页面中的用户。问题似乎是我无法获得正确的查询过滤器。

    视图.py

     class UserView(generic.ListView):
         model = Post
         template_name = 'post/user_page.html'
         context_object_name = 'all_post'
    
         def get_queryset(self):
             return Post.author.all()
    

    class Post(models.Model):
        creator = models.CharField(max_length=250)
        post_name = models.CharField(max_length=250)
        category = models.CharField(max_length=250)
        post_photo = models.FileField()
        author = models.ForeignKey(User, blank=True, null=True, related_name ='user_post')
        category = models.ManyToManyField(Category)
    
        def get_absolute_url(self):
            return reverse('post:detail', kwargs={'pk': self.pk})
    
        def __str__(self):
            return self.creator + ' - ' + self.post_name
    

    配置文件页面

     <div class="col-sm-6 col-sm-offset-3">
        <div class="roote-container container-fluid">
            <h1>Welcome {{user.username}}</h1>
            <div class="row">
                    {% for post in all_post %}
                        <div class= col-sm-12">
                            <div class="thumbnail">
    
                                <!--Post Photo-->
                                <a href="{% url 'post:detail' post.id %}" >
                                    <img src="{{ post.post_photo.url }}" class="img-responsive">
                                </a>
    
                                <div class="caption">
                                    <h2>{{ post.post_name }}</h2>
                                    <p>{{ post.user }}</p>
    
                                    <!-- Details-->
                                    <a href="{% url 'post:detail' post.id %}"class="btn btn-primary">{{post.posts_name}} post</a>
    
                                     <!--delete-->
                                     <form action="{% url 'post:post-delete' post.id %}" method="post" style="display inline;">
                                        {% csrf_token %}
                                        <input type="hidden" name="post_id" value="{{ post.id }}"/>
                                        <button type="submit" class="btn btn-default btn-sm">
                                        <span class="glyphicon glyphicon-trash"></span>
                                        </button>
                                    </form>
                                </div>
                            </div>
                        </div>
                    {% endfor %}
            </div>
        </div>
    </div>
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Exprator    7 年前

    什么是Post.author.all()?

    如果你需要某个作者的所有帖子,那就这样做吧

    Post.objects.filter(author__username= 'name of author') 
    

    其中,name是作者模型中的一个字段。

    或者如果你想要所有作者的帖子

     Post.objects.all().select_related('author')
    
        2
  •  0
  •   Nifled    7 年前

    related_name ='user_posts' 根据定义,检索对应于用户实例的帖子的更好方法是基于 related_name

     user_posts = <the user>.blog_posts.all()