2011-09-02 62 views
1

我有一個圖片模型,看起來像這樣如何以編程方式創建一個具有ImageField的和領域捕捉的寬度和高度在Django

class Photo(models.Model): 
    title = models.CharField(max_length=100, blank=True) 
    width = models.IntegerField() 
    height = models.IntegerField() 
    image = models.ImageField(upload_to=upload_to_callable, width_field="width", height_field="height") 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey() 
    create_date = models.DateTimeField(auto_now_add=True) 
    modified_date = models.DateTimeField(auto_now=True) 
    site = models.ForeignKey(Site) 

在我的測試中一個模型,我需要創建這個模型編程。這是我在做什麼

def _create_random_image(self): 
     import Image,ImageDraw 

     img = Image.new("RGB", (300,300), "#FFFFFF") 
     draw = ImageDraw.Draw(img) 

     r,g,b = rint (0,255), rint(0,255), rint(0,255) 
     dr = (rint(0,255) - r)/300. 
     dg = (rint(0,255) - g)/300. 
     db = (rint(0,255) - b)/300. 
     for i in range(300): 
      r,g,b = r+dr, g+dg, b+db 
      draw.line((i,0,i,300), fill=(int(r),int(g),int(b))) 

     tmpfilename = "/tmp/test36052.png" 
     img.save(tmpfilename, "PNG") 
     f = file(tmpfilename) 
     return f 

def testHomePageImage(self): 
    tmpfile = self._create_random_image() 
    photo = Photo.objects.create(image=tmpfile, 
           title=site1_home_page.title, 
           site=self.site1, 
           content_object = site1_home_page) 

我收到以下錯誤

AttributeError的:「文件」對象有沒有屬性「寬度」

是否有擴展文件對象的內部Django的對象,我可以用?

+0

我想我可以看看form.ImageField清理到什麼。讓我看看是否有幫助。 – arustgi

回答

1

嘗試直接返回ImageFile(f)而不是fImageFiledjango.core.files.images.ImageFile。關於我的頭頂,我認爲這樣做。

編輯:更正了錯字,因此它是正確的。

+0

非常關閉。我不得不這樣做鏡像文件(F)照片= Photo.objects.create(圖像鏡像文件=(TMPFILE), 標題= site1_home_page.title, 網站= self.site1, content_object = site1_home_page) – arustgi

+0

衛生署!當我將課程放入時,我只是輸入了錯誤。請注意,我的導入是正確的。 :-D – tswicegood

相關問題