''对象不可迭代。 Django 1.11

时间:2018-10-23 12:26:41

标签: python django

我正在尝试使用get()显示单个项目。

型号:

class JoinGroup(models.Model):
    title=models.CharField(max_length=120)
    location=models.CharField(max_length=20)
    details= models.TextField()
    travelers_that_have_booked=models.FloatField()
    price1=models.FloatField()
    price2=models.FloatField()
    price3=models.FloatField()
    price4=models.FloatField()
    price5=models.FloatField()
    price6=models.FloatField()
    price7=models.FloatField()
    image1=models.ImageField()
    image2=models.ImageField()
    image3=models.ImageField()
    image4=models.ImageField()
    image5=models.ImageField()
    image6=models.ImageField()
    image7=models.ImageField()
    accomodation=(
        ('budget'),
        ( 'standard')

    )
    itinerary= models.TextField()
    created_on=models.DateField(auto_now_add=True)
    bookbefore=models.DateField()

    def __str__(self):
        return self.title 

观看次数:

def single(request, id):

    singlegroup = get_object_or_404(JoinGroup, id=id)

    return render(request, 'joingroup/single.html', {"singlegroup": singlegroup})

错误:

'JoinGroup' object is not iterable

1 个答案:

答案 0 :(得分:2)

此处singlegroup不是QuerySet,而是JoinGroup对象,因此,除非您使对象可迭代(否则错误表明您没有),则无法对其进行迭代。

在模板中,您写:

{% for sgs in singlegroup %}
<section><h3 class="fw-md mb-1">{{sgs.title}}</h3>
<ul class="hotel-title mb-3"> ....</ul&>lt;/section>
{% endfor %}

但是这没有多大意义,因为您获取了单个 JoinGroup对象,因此只能渲染单个对象。您可以将模板重写为:

<section><h3 class="fw-md mb-1">{{ singlegroup.title }}</h3>
<ul class="hotel-title mb-3"> ....</ul></section>

但是根据模板,这可能更多是“概念错误” /“设计错误”。