gpt4 book ai didi

Django 在每个用户的 UI 中隐藏帖子(对象)而不影响主模型

转载 作者:行者123 更新时间:2023-12-05 02:10:39 25 4
gpt4 key购买 nike

我有一个应用程序可以显示所有具有以下模型的新闻网站:

class NewsItem(models.Model):
url = models.CharField(max_length=500, default="",unique=True)
title = models.CharField(max_length=500, default="")
hacker_news_url = models.CharField(max_length=500, default="")
posted_on = models.DateTimeField(default=datetime.now)
upvote_count = models.IntegerField(default=0)
comment_count = models.IntegerField(default=0)

用户界面: enter image description here

我已经设置了默认的 django 身份验证来查看此页面。用户界面有每个帖子的隐藏按钮。所以问题是如果登录用户隐藏帖子,则必须仅对该用户隐藏帖子(即使在页面刷新后),而不从 NewsItem 模型/表中删除。怎么做?请帮忙!

这是我的views.py:

@login_required(login_url='/accounts/login')
def index(request):
context={'news_items':NewsItem.objects.all().order_by('posted_on')}
return render(request, "hello.html", context)

最佳答案

您需要在某处设置某种“阅读证明”。一种方法是在 NewsItemUser 模型之间添加 M2M。

只要用户点击“标记为已读”,您就可以执行类似NewsItem.users.add(request.user) 的操作,您可以过滤您的NewsItem 在您的 index View 中。

class NewsItem(models.Model):
url = models.CharField(max_length=500, default="",unique=True)
title = models.CharField(max_length=500, default="")
hacker_news_url = models.CharField(max_length=500, default="")
posted_on = models.DateTimeField(default=datetime.now)
upvote_count = models.IntegerField(default=0)
comment_count = models.IntegerField(default=0)

users = models.ManyToManyField('your-user-model', verbose_name="Readers", related_name="reads")

在“makemigrations/migrate”之后,在您看来:

@login_required(login_url='/accounts/login')$
def index(request):
news = NewsItem.objects.exclude(users=request.user).order_by('posted_on')
context={'news_items':news}
return render(request, "hello.html", context)

@login_required(login_url='/accounts/login')
@require_http_methods(['POST'])
def read(request, news_item_pk):
"""
This is the most basic example.
If you use AJAX Calls, Do not forget to add your CSFR;
"""
news = get_object_or_404(NewsItem, pk=news_item_pk)
news.users.add(request.user)
return HttpResponse()

最后在您的 View 中,您应该添加您的read View

关于Django 在每个用户的 UI 中隐藏帖子(对象)而不影响主模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com