我正在开发应用程序,用户可以在其中关注主题以获取更新。
下面是models.py
from django.contrib.auth.models import User
class Topic(models.Model):
name = models.CharField(max_length=30, unique=True)
description = models.CharField(max_length=300)
created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, related_name='topic')
def __str__(self):
return self.name
class Follow(models.Model):
topic = models.ForeignKey(Topic, related_name='follow')
user = models.ForeignKey(User, related_name='follow')
视图.py
def home(req):
user_id = req.user.id
follow = Follow.objects.filter(user = req.user).all()
follow = [f.topic for f in follow]
question = Question.objects.filter(topic__in=follow).all()
answer = Answer.objects.filter(ques__in=question).all()
topic = Topic.objects.all().distinct(name)
return render(req,'home.html',{'topic':topic,'answer':answer,'upvote':upvote})
模板:
{% for t in topic %}
{% for ft in t.follow.all%}
{% if ft.user == user %}
<h4 id="{{t.pk}}" class="topCls"><span class="badge badge-success">{{t.name}}</span></h4>
{% endif %}
{% endfor %}
{% endfor %}
我需要让用户关注的主题为绿色,其他主题为红色
我可以获得用户关注的主题,如上,我如何区分关注与否?
提前致谢 !!!
您可以像这样检查以下列表中的主题:
{% for t in topic %}
{% if t in follow %}
<h4 id="{{t.pk}}" class="topCls"><span class="badge badge-success">{{t.name}}</span></h4>
{% else %
<h4 id="{{t.pk}}" class="topCls"><span class="badge badge-warning">{{t.name}}</span></h4>
{% endif %}
{% endfor %}
您需要将follow
列表传递到上下文中:
def home(req):
user_id = req.user.id
follow = Topic.objects.filter(follow__user=req.user)
question = Question.objects.filter(topic__in=follow).all()
answer = Answer.objects.filter(ques__in=question).all()
topic = Topic.objects.all().distinct(name)
return render(req,'home.html',{'topic':topic,'answer':answer,'upvote':upvote, 'follow': follow})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句