簡體   English   中英

django-'ModelName'對象不可迭代

[英]django - 'ModelName' object is not iterable

我有一個名為TemplateImages的模型類,其中包含對媒體文件夾中圖像的引用。

我想在html文件中循環顯示圖像。

這是我的models.py代碼:

class TemplateImages(models.Model):
    image = models.ImageField(upload_to='template_images')  # template_images/en/chronological/en-chronological-resume-1.png.
    type = models.CharField(max_length=40)  # e.g. chronological, functional, combination, coverletter
    language_code = models.CharField(max_length=7, choices=languages.LANGUAGE_CHOICES, default='en')  # en.

    def __str__(self):
        return '{}'.format(self.image)

這是我的views.py代碼:

def templates(request):
    ...
    language_pref = request.user.userprofile.language_preference
    chronological_images = core_models.TemplateImages('chronological', 'en')
    ...
    return render(request, 'templates/templates.html', {
        ...
        'chronological_images': chronological_images,
        ...
    })

這是我的數據庫的屏幕截圖:

在此處輸入圖片說明

在我的html頁面上,我放置了以下django for循環,以在頁面上顯示25張圖像:

 {% for c_image in chronological_images %}
     {{c_image.image|file_url|safe}}"
 {% endfor %}

我收到以下錯誤消息:

'TemplateImage' object is not iterable

我已經搜索過google,但是找不到任何有用的示例。

有人可以解釋我做錯了什么嗎?

您只是構造了TemplateImages對象,而不運行查詢。 嘗試這個:

chronological_images = TemplateImages.objects.filter(
                           type='chronological',
                           language_code='en',
                       )

您只構造了一個新的 TemplateImages對象,但沒有將其保存到數據庫中,當然,單個對象是不可迭代的。 如果要執行查詢,則應使用TemplateImages.objects.filter() ,例如:

def templates(request):
    # ...
    language_pref = request.user.userprofile.language_preference
    chronological_images = core_models.TemplateImages.objects.filter( type='chronological', language_code='en' )
    # ...
    return render(request, 'templates/templates.html', {
        # ...
        'chronological_images': chronological_images,
        # ...
    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM