如何在 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')