Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-评级系统视图和;模板_Python_Django_Django Forms_Rating System - Fatal编程技术网

Python Django-评级系统视图和;模板

Python Django-评级系统视图和;模板,python,django,django-forms,rating-system,Python,Django,Django Forms,Rating System,我有一个我想根据多个标准对其进行评分的内容。 想象一下这种模式: class Content(models.Model): name = models.CharField(max_length=50) class Criterion(models.Model): name = models.CharField(max_length=50) content = models.ForeignKey(Content) class ContRate(models.Model): us

我有一个我想根据多个标准对其进行评分的内容。
想象一下这种模式:

class Content(models.Model):
  name = models.CharField(max_length=50)

class Criterion(models.Model):
  name = models.CharField(max_length=50)
  content = models.ForeignKey(Content)

class ContRate(models.Model):
  user = models.ForeignKey(User, help_text="Who rated ?")
  crit = models.ForeignKey(Criterion)
  rate = models.DecimalField()
用户有一个显示内容的页面。
在此页面中,他还可以根据标准集对内容进行评分

评级将使用Ajax完成。
现在我尝试实现视图&模板

view.py

#...
def viewcont(request, content_id):
  """The user can view a content & rate it"""
  content = get_object_or_404(Content, pk=content_id)
  RateFormSet = modelformset_factory(ContRate)
  formset = RateFormSet(queryset=ContRate.objects.filter(content=content, user=request.user))
  objs = {
    'content': content,
    'forms': formset,
  }
  return render_to_response('content/content_detail.html', objs
  , context_instance=RequestContext(request)
  )
#...
content\u detail.html

<!-- ... -->
<div id="rating">
  <ul>
{% for crit in content.crit_set.all %}
    <li>
      {{ crit }}
      <div class="rateit"
        data-rateit-value="the_actual_rating_if_already_there"
        data-rateit-ispreset="true"
        crit-id="{{ crit.id }}"></div>
    </li>
{% endfor %}
  </ul>
</div>
<!-- ... -->

    {content.crit_set.all%}
  • {{crit}}
  • {%endfor%}
现在,我如何使用
表单
表单集显示实际费率?
我怎样才能从任何点击过的星星中画出一个空表单供Ajax发布?

(我知道javascript/jQuery部分)

不确定表单集的要点是什么。通过
标准
对象,使用反向外键对
合同
,可以获得所有费率,方法与从
标准
内容
完全相同

为了尽可能提高效率,您可能希望在视图中获得相关评级,并将它们合并到一个数据结构中:

content = get_object_or_404(Content, pk=content_id)
criteria = content.criteria_set.all()
user_ratings = ContRate.objects.filter(content=content, user=request.user)
ratings_dict = dict((c.crit_id, c.rate) for c in user_ratings)
for crit in criteria:
    crit.user_rating = ratings_dict.get(crit.id)
现在,您可以将
标准
直接传递到模板中,然后在模板中迭代以显示每个标准的
用户评分


(最后一点:“标准”是复数,单数是“标准”。-)

不确定表单集的要点是什么。通过
标准
对象,使用反向外键对
合同
,可以获得所有费率,方法与从
标准
内容
完全相同

为了尽可能提高效率,您可能希望在视图中获得相关评级,并将它们合并到一个数据结构中:

content = get_object_or_404(Content, pk=content_id)
criteria = content.criteria_set.all()
user_ratings = ContRate.objects.filter(content=content, user=request.user)
ratings_dict = dict((c.crit_id, c.rate) for c in user_ratings)
for crit in criteria:
    crit.user_rating = ratings_dict.get(crit.id)
现在,您可以将
标准
直接传递到模板中,然后在模板中迭代以显示每个标准的
用户评分


(最后一点:“criteria”是复数,单数是“criteria”。-)

我想为所有标准的Ajax帖子至少提供一个模型。谢谢你的“标准”,我不知道:)我在考虑至少为所有标准的Ajax帖子提供一个模型表单。谢谢你的“标准”,我不知道:)