首页 > 解决方案 > Django imagefield 不显示在模板上

问题描述

我有一个带有 imageField 的模型,当我上传文件并在数据库中添加文件路径到 img 字段时,但是当我尝试在我的模板中调用它时,它似乎总是空 item.img 而其他字段运行良好,以显示它我使用列表视图模型

 def content_file_name(instance, filename):
    ext = filename.split('.')[-1]
    # filename = "%s_%s.%s" % (instance, instance.questid.id, ext)
    return f"uploads/items/{instance.id}.{ext}"

class Item(models.Model):
    
    type = models.IntegerField(choices=TYPE, blank=False, default=NO_CAT)
    name = models.CharField(max_length=250 )
    description = models.CharField(max_length=250, blank=True )
    img = models.ImageField(upload_to=content_file_name, blank=True) 
    tags = models.ManyToManyField(Tag, through='Item_Tags') 

    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
    active = models.BooleanField(default=False)
    created = models.DateTimeField(default=timezone.now)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):  #metodo righiesto
        return self.name

我的模板

<div class="card-columns">

    {% for item in page_obj %}
    <div class="card">
        {% if item.img %}
        <img class="card-img-top" src="{{item.image.url}}" alt="Card image cap">
        {% else %}
        NO image
        {% endif %}
        <div class="card-body">
            <h5 class="card-title">{{item.name}}</h5>
            <p class="card-text">{{item.description}}</p>
            <p class="card-text"><small class="text-muted"></small></p>
        </div>
    </div>

    {% endfor %}

</div>

标签: djangodjango-modelsdjango-views

解决方案


推荐阅读