首页 > 解决方案 > ValueError at / 'pic' 属性没有与之关联的文件

问题描述

我有一个简单的模型,其中 pic 字段具有 null 和空白

class PostForNewsFeed(models.Model):
    title = models.CharField(max_length=100, blank=True)
    description = models.CharField(max_length=255, blank=True)
    slug = models.SlugField(unique=True, max_length=100, blank=True)
    pic = models.ImageField(upload_to='path/to/img', null=True, blank=True, default='')



 {% if post.pic.url %}    
        <a href="{% url 'post-detail' post.id %}"
          ><img class="card-img-top" src="{{ post.pic.url }}" alt=""
        /></a>        
        {% endif %}

当我在没有图片的情况下提交时,我得到的图片属性与文件无关。

我的代码在模板中似乎很好。

标签: django

解决方案


你应该检查if post.pic,而不是if post.pic.url

{% if post.pic %}    
    <a href="{% url 'post-detail' post.id %}"><img class="card-img-top" src="{{ post.pic.url }}" alt=""/></a>        
{% endif %}

根据讨论,在您的模板中,您经常使用post.pic.url模板标签等。例如:

{% post_to_facebook post.pic.url "Post to Facebook" %}

您需要将这些设置为有条件的,因为如果a 不存在,您将无法获取.urla 。post.picpost.pic

因此,您需要将其包装在一个{% if … %}条件中:

{% if post.pic %}
    {% post_to_facebook post.pic.url "Post to Facebook" %}
{% endif %}

推荐阅读