Django对象不可迭代。如何获得观看次数最多的对象

时间:2018-10-24 19:58:26

标签: django

嗨,我是新手,并且收到错误消息“'Zagrania'对象不可迭代”。我想要获得最多查看的对象并以不同的方式显示它(wyswietlenia-对象视图)

views.py

def zagrania(request):
zagrania = Zagrania.objects.all().order_by('-data')
najepszezagranie = Zagrania.objects.all().order_by('-wyswietlenia').first()

return render(request, 'zagrania/zagrania.html', { 'zagrania':zagrania, 'najepszezagranie':najepszezagranie})


models.py

class Zagrania(models.Model):
tytul = models.CharField(max_length=70)
data = models.DateTimeField(auto_now_add=True)
autor = models.ForeignKey(User,on_delete=models.CASCADE,default=None)
opis = models.TextField(max_length=276, default='')
wyswietlenia = models.PositiveIntegerField(default=0)
filmik = models.FileField(upload_to="static/filmiki")
#votes= models.IntegerField(default=0)







template

{% for zagranie in najepszezagranie %}

  <a href="{% url 'zagrania_detail' zagranie.id%}">

    <video>
    <source src="{{ zagranie.filmik.url }}" type="video/mp4"></source>
    </video>
  </a>

   <a href="{% url 'zagrania_detail' zagranie.id%}">{{ zagranie.tytul }}</a>


{% endfor %}

1 个答案:

答案 0 :(得分:0)

najepszezagranie对象不是QuerySet对象的Zagrania(或任何其他集合),而是Zagrania对象。因此{% for zagranie in najepszezagranie %}毫无意义。

因此,您可以将najepszezagranie用作对象(当然它是一个对象),并删除{% for ... %}循环:

<!-- template.html -->
<a href="{% url 'zagrania_detail' najepszezagranie.id %}"><video>
    <source src="{{ najepszezagranie.filmik.url }}" type="video/mp4"></source>
</video></a>
<a href="{% url 'zagrania_detail' najepszezagranie.id %}">{{ najepszezagranie.tytul }}</a>