【发布时间】:2011-09-17 07:28:49
【问题描述】:
这里是上下文: 我有用户、视频、主题、标准和评分
- 视频有主题
- 主题有标准
- 用户可以为给定主题创建视频
- 用户可以根据为相关主题指定的标准对视频进行评分。
这是我的模型:
RATE_CHOICES = zip( range(1,5), range(1,5) )
class VideoCrit(models.Model):
"""Criteria to rate videos on.
Can be multiple for each Topic of Video"""
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'Video Criteria'
class VideoTopic(models.Model):
name = models.CharField(max_length=50)
descr = models.TextField(blank=True, null=True)
crits = models.ManyToManyField(VideoCrit,
help_text='Criterias to rate the videos',
blank=True, null=True,
)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'Video Topic'
class VideoFile(models.Model):
"""Uploadable by users to be rated and commented"""
name = models.CharField(max_length=50)
descr = models.TextField(blank=True, null=True)
file = models.FileField(upload_to='videos')
topic = models.ForeignKey(VideoTopic)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'Chatter Tube'
class VideoRate(models.Model):
"""Users can Rate each Video on the criterias defined for the topic"""
user = models.ForeignKey(User)
video = models.ForeignKey(VideoFile)
crit = models.ForeignKey(VideoCrit)
rate = models.DecimalField(max_digits=2, decimal_places=1, choices=RATE_CHOICES)
class Meta:
unique_together = (('user', 'video', 'crit'),)
verbose_name = 'Tube Rating'
还好吗?
如果是,来自给定 VideoFile 的模板(基于 VideoFile 类的 DetailView),这里是模板的有趣部分
<div id="rating">
<ul>
{% for crit in videofile.topic.crits.all %}
<li>
<div class="rateit"
crit-id="{{ crit.id }}"></div>
{{ crit.name }}
</li>
{% endfor %}
</ul>
</div>
URLconf 和查看
#urlconf
#...
(r'viewtube/(?P<pk>\d+)$', VideoFileDetailView.as_view()),
#...
#view
class VideoFileDetailView(DetailView):
model = VideoFile
def get_context_data(self, **kwargs):
context = super(VideoFileDetailView, self).get_context_data(**kwargs)
# context['rates'] = VideoRate.objects.filter(video=11)
return context
如何查看当前登录用户对当前视频的评分?
【问题讨论】:
-
对我来说看起来还不错,但它有用吗?
标签: django django-models django-templates