我下面這個答案來獲取圖像,並將其存儲在我的模型:Programmatically saving image to Django ImageFieldDjango的存儲靜態資產圖像,但不保存文件路徑DB
我想將圖像存儲在靜態資產,也在模型屬性Product.large_image_file上存儲該圖像的路徑。
當我在shell_plus中手動執行此代碼時,圖像被成功下載並存儲,並且文件路徑已成功保存在數據庫中。
當使用Django runserver執行代碼時,圖像被下載並添加到靜態文件中,但路徑未存儲在數據庫中。
完全相同的代碼在shell_plus中工作,但不能與runserver一起使用。
我用ipdb來進入runserver環境,當我檢查each.large_image_file時,它給了我正確的路徑,但是這個路徑並沒有保存到數據庫中,即使我手動調用each.save()。
任何想法將不勝感激!
def get_product_images():
# Download images from the URL and save it to static assets and the path to the model
product_photos = Product.objects.all()
for each in product_photos:
if each.large_image_url is not None and len(each.large_image_url) > 0:
try:
#check if the file is already stored
each.large_image_file.url
#error is raised if the file does not exist, retrieve and store the file
except ValueError:
result = urllib.request.urlretrieve(each.large_image_url)
each.large_image_file.save(os.path.basename(
each.large_image_url),
File(open(result[0], 'rb'))
)
each.save()
除了不應該是一個通用的。請指定你想要捕捉的一個(我認爲AttributeError)。我不是說這是這裏的問題,只是指出你應該擺脫 – e4c5
檢查實例pk的習慣。並看看你是否有任何交易 – e4c5
@ e4c5是剛更新了該建議和一些更多的細節。這個函數在shell中完美工作,但仍然沒有在模型屬性each.large_image_file上存儲路徑 –