我有文章模型:
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)
我有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. 用户B. 用户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?
此外,问题的第二部分是:
如何按日期按用户显示文章?
答案 0 :(得分:2)
问题的第一部分:
要获取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')
答案 1 :(得分:1)
在查询集中使用values()命令。
user_articles = Article.objects.filter(whopost=request.user.userprofile.id).values('whopost').order_by('-pub_date')