如何在 Django 中按用户显示文章?
how to display articles by user in django?
我有文章模型:
class Article(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField(editable=False)
modified = models.DateTimeField(editable=True)
whopost = models.ForeignKey(UserProfile)
我有用户配置文件模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
info1 = models.BooleanField(default=False)
mobile = models.CharField(max_length=50,default="")
我尝试在用户和文章之间建立关系,以便我知道谁创建了一篇文章。它可以让我按登录用户显示文章。
所以,
我尝试在我的文章浏览量中关注:
def articles(request):
args = {}
args.update(csrf(request))
user_articles = Article.objects.filter(whopost_id=request.user.id)
latest_articles = Article.objects.order_by('-pub_date')[:10]
#display articles in order by date
#args['articles'] = latest_articles
#display articles in order by user
args['articles'] = user_articles
args['language'] = language
args['session_language'] = session_language
return render(request, 'articles.html', args)
我创建了三个用户:
用户A
用户乙
用户 C
在我的 userprofile_userprofile 用户中有以下
id | user_id
1 | 1
2 | 13
3 | 14
在我的 auth_user 用户中有以下
id
1
13
14
因此,我得到值 1、2、3 而不是 1、13、14。
我应该在我的代码中更改什么以获得值 1、13、14 而不是 1、2、3?
此外,问题的第二部分是:
如何按日期按用户显示文章?
你问题的第一部分:
要获取 userprofile
ID 而不是 user
ID,只需像这样访问您与 UserProfile
的一对一关系:
userprofile_id = request.user.userprofile.id
你问题的第二部分:
要按日期订购特定用户的文章,您只需执行以下操作:
articles_by_date = Article.objects.filter(
whopost__id=request.user.userprofile.id
).order_by('-pub_date')
在查询集中使用 values() 命令。
user_articles = Article.objects.filter(whopost=request.user.userprofile.id).values('whopost').order_by('-pub_date')
我有文章模型:
class Article(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField(editable=False)
modified = models.DateTimeField(editable=True)
whopost = models.ForeignKey(UserProfile)
我有用户配置文件模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
info1 = models.BooleanField(default=False)
mobile = models.CharField(max_length=50,default="")
我尝试在用户和文章之间建立关系,以便我知道谁创建了一篇文章。它可以让我按登录用户显示文章。
所以,
我尝试在我的文章浏览量中关注:
def articles(request):
args = {}
args.update(csrf(request))
user_articles = Article.objects.filter(whopost_id=request.user.id)
latest_articles = Article.objects.order_by('-pub_date')[:10]
#display articles in order by date
#args['articles'] = latest_articles
#display articles in order by user
args['articles'] = user_articles
args['language'] = language
args['session_language'] = session_language
return render(request, 'articles.html', args)
我创建了三个用户:
用户A 用户乙 用户 C
在我的 userprofile_userprofile 用户中有以下
id | user_id
1 | 1
2 | 13
3 | 14
在我的 auth_user 用户中有以下
id
1
13
14
因此,我得到值 1、2、3 而不是 1、13、14。
我应该在我的代码中更改什么以获得值 1、13、14 而不是 1、2、3?
此外,问题的第二部分是:
如何按日期按用户显示文章?
你问题的第一部分:
要获取 userprofile
ID 而不是 user
ID,只需像这样访问您与 UserProfile
的一对一关系:
userprofile_id = request.user.userprofile.id
你问题的第二部分:
要按日期订购特定用户的文章,您只需执行以下操作:
articles_by_date = Article.objects.filter(
whopost__id=request.user.userprofile.id
).order_by('-pub_date')
在查询集中使用 values() 命令。
user_articles = Article.objects.filter(whopost=request.user.userprofile.id).values('whopost').order_by('-pub_date')