Django - как сделать ImageField / FileField необязательным? - PullRequest
31 голосов
/ 20 апреля 2010
class Product(models.Model):
    ...    
    image = models.ImageField(upload_to = generate_filename, blank = True)  

Когда я использую ImageField (пусто = True) и не выбираю изображение в форме администратора, возникает исключение.

В коде Django вы можете увидеть это:

class FieldFile(File):
   ....

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

    def _get_file(self):
        self._require_file()
        ...

У Django trac есть билет # 13327 на эту проблему, но, похоже, он не может быть скоро исправлен. Как сделать эти поля необязательными?

Ответы [ 2 ]

22 голосов
/ 20 апреля 2010

Набор null=True (см. документация )

class Product(models.Model):
    ...    
    image = models.ImageField(upload_to=generate_filename, blank=True, null=True)
19 голосов
/ 15 октября 2014

blank=True должно работать. Если для этого атрибута, который по умолчанию равен False, задано значение True, он разрешит ввод пустого значения.

У меня есть следующий класс в моей статье:

class Photo(models.Model):
        imagename = models.TextField()
        articleimage = models.ImageField(upload_to='photos/%Y/%m/%d', blank=True)

Я использую вышеупомянутый класс в другом классе, используя отношение ManyToManyField:

class Article(models.Model):
        pub_date = models.DateTimeField(default=timezone.now)
        slug = models.SlugField(max_length=130)
        title = models.TextField()
        photo = models.ManyToManyField(
            Photo, related_name='photos', blank=True)
        author = models.ForeignKey(User)
        body = models.TextField()
        categories = models.ManyToManyField(
            Category, related_name='articles', null=True)

Я хочу сделать изображения в своих статьях необязательными, поэтому blank=True в

photo = models.ManyToManyField(Photo, related_name='photos', blank=True)

необходимо. Это позволяет мне создавать статьи без изображений, если я хочу.

Используете ли вы класс Product в каких-либо отношениях? Если это так, обязательно установите blank=True в отношениях, которые вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...