fil*_*yoo 2 python django listview django-queryset django-related-manager
尝试显示用户的所有Announce对象时出现问题.我的问题是:考虑我以id = 1的用户身份登录.当我去/ users/1 /它显示我的所有帖子.但问题是当我想通过转到/ users/2 /来显示id = 2的其他用户的所有帖子时,它仍然显示我的所有Announce对象,而不是id = 2的用户.
models.py
class Announce(models.Model):
    owner        = models.ForeignKey('auth.User', related_name='announces')
    created_date = models.DateTimeField(auto_now_add=True)
    body         = models.TextField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)
views.py
class UserAnnouncesList(ListView):
    model = Announce
    template_name = 'myApp/user_announces_list.html'
    context_object_name = 'all_announces_by_user'
    def get_queryset(self):
        return Announce.objects.filter(owner=self.request.user)
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = [
url(r'users/(?P<pk>[0-9]+)/$', views.UserAnnouncesList.as_view(), name='user_announces_list'),]
Run Code Online (Sandbox Code Playgroud)
user_announces_list.html
{% extends "account/base.html" %}
{% block content %}
{% for announce in all_announces_by_user %}
<h1>{{announce.user.username}}</h1>
    <p>{{announce.body}}</p>
{% endfor %}
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)
我是否必须使用某种类似的:Announce.objects.get(pk = ???)?
我感谢您的帮助!
该request.user是登录的用户.您需要使用pk作为url传递的内容.这存储在kwargslistview 的字典中:
class UserAnnouncesList(ListView):
    model = Announce
    template_name = 'myApp/user_announces_list.html'
    context_object_name = 'all_announces_by_user'
    def get_queryset(self):
        return Announce.objects.filter(owner=self.kwargs['pk'])Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3712 次  |  
        
|   最近记录:  |