【发布时间】:2016-01-01 03:11:33
【问题描述】:
我正在构建 Django 应用程序,具有提交链接和投票功能。
我想显示用户详细信息页面中用户投票的所有链接。我可以使用以下方法在 python shell 中检索它们:
Link.objects.filter(votes__voter=user)
但我不知道如何将它作为额外的上下文字段添加到视图中。以下是代码:
models.py
class Link(models.Model):
title = models.CharField(max_length=200)
submitter = models.ForeignKey(User)
submit_date = models.DateTimeField(auto_now_add=True)
up_votes = models.IntegerField(default=0, blank=True, db_index=True)
...
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
...
class Vote(models.Model):
voter = models.ForeignKey(User)
link = models.ForeignKey(Link, related_name='votes')
...
views.py
class UserProfileDetailView(DetailView):
model = get_user_model()
slug_field = "username"
template_name = "user_detail.html"
def get_object(self, queryset=None):
user = super(UserProfileDetailView, self).get_object(queryset)s
UserProfile.objects.get_or_create(user=user)
return user
user_detail.html
...
{% if object == request.user and request.user.is_authenticated %}
<p><a href='{% url "edit_profile" %}'>Edit My Profile</a></p>
{% endif %}
{% if link in voted_list %}
<p><a href='{% url "link_detail" %}'>{{ link.title }}</a></p>
{% endif %}
...
我不知道如何根据this 链接实现添加额外字段。我不知道我需要定义新的查询集、定义新的对象还是仅仅指向一个新的上下文。如果您能为我阐明这一点,我将不胜感激。
【问题讨论】:
-
在使用基于类的视图时将其用作快速参考:ccbv.co.uk
标签: django django-views django-queryset django-generic-views django-context