簡體   English   中英

在論壇應用中顯示最新的“ commentator”用戶名[Django]

[英]Display latest “commentator” username in forum app [Django]

我正在創建一個論壇應用,並希望顯示最新評論者的用戶名(如屏幕截圖所示):

在此處輸入圖片說明

但是我在信息方面有些空白,這是到目前為止的代碼:

楷模

class Forum(models.Model):
"""
Forum Model
"""
forum_author = models.ForeignKey(
    Profile,
    related_name='user_forums',
    null=True,
    blank=True,
    on_delete=models.CASCADE
)

forum_title = models.CharField(
    max_length=225,
    verbose_name=u'Thread Title',
    blank=False,
    null=False
)

forum_category = models.ForeignKey(
    'Category',
    verbose_name=u'Thread Category',
)

forum_content = MarkdownxField()

class Comment(models.Model):
"""
Comment Model
"""
forum = models.ForeignKey(
    'Forum',
    related_name='forum_comments'
)

comment_author = models.ForeignKey(
    Profile,
    related_name='user_comments',
    null=True,
    blank=True,
    on_delete=models.CASCADE
)

comment_content = MarkdownxField()

created_date = models.DateTimeField(
    default=datetime.datetime.now,
)

論壇列表視圖-顯示所有主題

...
from app_forum.models import Forum, Comment    

def forum_list_view(request):
        forum_list = Forum.objects.all().order_by("-misc_created")
        return render(request, 'app_forum/forum_list.html' {'forum_list': forum_list})

我的單線程視圖:

def forum_single_view(request, pk):
forum = get_object_or_404(Forum, pk=pk)
forum_comments = Comment.objects.filter(forum=forum.id)
paginator = Paginator(forum_comments, 10)
page = request.GET.get('page', 1)
try:
    forum_comments = paginator.page(page)
except PageNotAnInteger:
    forum_comments = paginator.page(1)
except EmptyPage:
    forum_comments = paginator.page(paginator.num_pages)
return render(request, 'app_forum/forum_single.html', {'forum': forum, 'forum_comments': forum_comments})

您可以通過以下方式獲取最新評論

   L_comment = Comment.objects.latest('created_date')

您可以通過以下方式獲得評論的用戶

   L_comment.comment_author

如果您想在特定論壇中獲得最新評論,

   forum = Forum.objects.get(forum_title='forum-title')
   latest_comment = forum.forum_comments.latest('created_date')
   author = latest_comment.comment_author

更新:

更好的選擇是在論壇類中定義一個方法,如下所示:

   def latest_comment_author(self):
          return self.forum_comments.latest('created_at').comment_author

您可以通過以下方式從模板訪問它

    {{ forum.latest_comment_author }}

您可以為此使用相關的對象管理器。 在論壇模型上創建一種方法,以檢索關於論壇的最新評論。 就像是:

@cached_property
def latest_coment(self):
    return self.forum_comments.order_by('-created_date').first()

然后,您可以在模板上調用此方法以獲取有關它的最新評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM