2010-04-20 27 views
26
class Product(models.Model): 
    ...  
    image = models.ImageField(upload_to = generate_filename, blank = True) 

當我使用ImageField(空白=真),不要選擇圖像到管理員窗體,異常發生。Django - 如何讓ImageField/FileField成爲可選項?

在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這個問題,但似乎不能儘快解決。如何使這些字段可選?

+0

你找到一個解決方案,似乎我有同樣的問題,現在 – niklas 2014-05-28 21:51:14

回答

19

null=True(見documentation

class Product(models.Model): 
    ...  
    image = models.ImageField(upload_to=generate_filename, blank=True, null=True) 
+31

空=真嚇人,空=真就足夠,因爲的ImageField /的FileField實際上CharFields底下...... – dlamotte 2010-08-27 21:13:09

+21

空=真不會做任何事情對於FileField或ImageField https://code.djangoproject.com/ticket/10244 – nont 2012-05-11 20:01:07

13

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

相關問題