votes up 3

The '%s' attribute has no file associated with it.

github stars 59414
Exception Class:

Raise code

# The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.

    def _require_file(self):
        if not self:
            raise ValueError("The '%s' attribute has no file associated with it." %

    def _get_file(self):
        if getattr(self, '_file', None) is None:
            self._file =, 'rb')
        return self._file
😲 Agile task management is now easier than calling a taxi. #Tracklify
🙏 Scream for help to Ukraine
Today, 2nd July 2022, Russia continues bombing and firing Ukraine. Don't trust Russia, they are bombing us and brazenly lying in same time they are not doing this 😠, civilians and children are dying too! We are screaming and asking exactly you to help us, we want to survive, our families, children, older ones.
Please spread the information, and ask your governemnt to stop Russia by any means. We promise to work extrahard after survival to make the world safer place for all.

Ways to fix

votes up 1 votes down

For example, you have a simple Django model 'Film':

from django.db.models.base import Model
from django.db.models import CharField, ImageField

class Film(Model):
  name = CharField(max_length=255, null=False)
  poster = ImageField()

And you try to show the image field in the django template when it is not set.

<h1>Film info</h4>
<h2>{{ film.poster.url }}</h2>       
<br><img src="{{ film.poster.url }}">

To solve this problem, it is enough to add an if statement:

<h1>Film info</h4>
<h2>{{ film.poster.url }}</h2>
{% if film.poster %}       
<img src="{{ film.poster.url }}">
{% else %}
<img src="url or path to some your default image">
{% endif %}

The situation is similar in python code.

film_info = {
  "poster": film.poster.url


film_info = {
  "poster": film.poster.url if film.poster else "url or path to some your default image"

Don't use hasattr(film.poster, 'url'). The error will be the same.

May 18, 2021 rivashchenko answer

Add a possible fix

Please authorize to post fix