我寫了一個簡單的Django應用程序測試的ImageField工作,但我遇到了問題upload_to只是似乎哪裏都不工作。下面是代碼:的Django ImageField的upload_to完全不
1 from django.db import models
2
3 # Create your models here.
4 class TestImage(models.Model):
5 img = models.ImageField(max_length=256, upload_to='images')
在我的settings.py我:
[email protected]:~/workspace/testimage$ ./manage.py shell
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import settings
>>> from image_app.models import TestImage
>>> p = TestImage(img='test.jpg')
>>> p.save()
>>> p.img.name
'test.jpg'
>>> p.img.path
u'/home/jchin/workspace/testimage/static/test.jpg'
>>> p.img.url
'/media/test.jpg'
你可以從看到:
2 from os.path import dirname, join, abspath
3 __dir__ = dirname(abspath(__file__))
50 MEDIA_ROOT = join(__dir__, 'static')
55 MEDIA_URL = '/media/'
然後我使用manage.py開始蟒蛇殼結果,Django完全忽略了我的'upload_to'參數。我不知道爲什麼。從文檔中,我應該期待p.img.path返回「/home/jchin/workspace/testimage/static/images/test.jpg」,並在數據庫中存儲「images/test.jpg」,對嗎?但DB簡單地只存儲文件名:
mysql> select * from image_app_testimage;
+----+-----------+
| id | img |
+----+-----------+
| 1 | test.jpg |
+----+-----------+
1 rows in set (0.00 sec)
我檢查了所有的文檔和我找不到什麼,我做錯了。有人有主意嗎?我使用的是django 1.2.5,它應該支持upload_to。
請幫忙! 約翰
你可以給一些代碼snipet上如何完成上傳? – pinghsien422 2012-01-07 06:16:40
我以爲上傳是在django之外進行的,好像我錯了。 – pinghsien422 2012-01-07 06:17:47
更多此答案的示例代碼或鏈接將非常有用 – 2016-06-12 22:28:30