Django:从特定用户获取所有对象
Django: Get all objects from a specific user
我在尝试显示来自用户的所有 Announce 对象时遇到问题。
我的问题是:假设我以 id=1 的用户身份登录。当我转到 /users/1/ 时,它会显示我所有的帖子。但问题是当我想通过转到 /users/2/ 显示来自另一个 id=2 的用户的所有帖子时,它仍然显示我所有的 Announce 对象,而不是 id=2.[=14 的用户=]
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)
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)
urls.py
urlpatterns = [
url(r'users/(?P<pk>[0-9]+)/$', views.UserAnnouncesList.as_view(), name='user_announces_list'),]
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 %}
我是否必须使用类似的东西:Announce.objects.get(pk=???) ?
感谢您的帮助!
request.user
是登录的用户。您需要 使用作为 url 传递的 pk
。这存储在列表视图的 kwargs
字典中:
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=<b>self.kwargs['pk']</b>)
我在尝试显示来自用户的所有 Announce 对象时遇到问题。 我的问题是:假设我以 id=1 的用户身份登录。当我转到 /users/1/ 时,它会显示我所有的帖子。但问题是当我想通过转到 /users/2/ 显示来自另一个 id=2 的用户的所有帖子时,它仍然显示我所有的 Announce 对象,而不是 id=2.[=14 的用户=]
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)
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)
urls.py
urlpatterns = [
url(r'users/(?P<pk>[0-9]+)/$', views.UserAnnouncesList.as_view(), name='user_announces_list'),]
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 %}
我是否必须使用类似的东西:Announce.objects.get(pk=???) ?
感谢您的帮助!
request.user
是登录的用户。您需要 使用作为 url 传递的 pk
。这存储在列表视图的 kwargs
字典中:
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=<b>self.kwargs['pk']</b>)