我正在嘗試第一次生產 - 部署Django項目。我的pre-Django實現包含了很多數據(數千個圖像,數據庫中的數千個條目)。我寫了一個自定義manage.py populate_db
命令,用於分析舊數據庫的轉儲,並根據我的模型創建新的Django數據庫。但是我堅持添加所有文件。手動添加文件到Django的媒體文件夾並以編程方式填充數據庫
我的初始部署計劃是在本地創建數據庫一次,sFTP-將所有圖像上傳到服務器上的媒體文件夾,對數據庫做同樣的事情,就是這樣。爲此,我需要數據庫引用媒體文件夾中的圖像文件。據我瞭解,Django只是通過文件名來完成它。到目前爲止,我已經能夠做到這一點:
def _add_image_files(self, user: str):
i = 0
for f in local_files:
i += 1
photo = Photo(album=1, number=i, back=False, added_by=user)
from django.core.files import File
photo.image.save(f.name, File(open(f.path, 'rb')))
其中的照片被定義爲
class Photo(models.Model):
album = models.IntegerField(null=True)
number = models.IntegerField(null=True)
image = models.ImageField(null=True, upload_to='photo_image_files')
但是Django的顯然是通過閱讀和它寫入介質文件夾中複製所有文件。我不需要這種重複,我只想將每個文件的引用添加到數據庫中。
我該如何實現它?或者,如果這是由於某種原因導致的,請讓我知道更好的方法。謝謝。