양식을 사용하지 않고 Django ImageField에 이미지 파일을 등록하고 파일을 복사하지 않으려면 어떻게해야하나요?Django의 ORM을 사용하여 이미지를 등록하는 방법
나는 이미지 /에있는 수천 개의 JPG를이 있고, 나는 비슷한 이미지의 모델을 등록 할 :
class Image(models.Model):
image = models.ImageField(upload_to='images', max_length=1000)
hash = models.CharField(max_length=1000, unique=True)
그러나 내가 장고에 "로드"이미지를 찾을 수있는 모든 문서를 프로젝트는 양식을 통해 그렇게하고 있다고 가정합니다.이 양식은 이미지가 MEDIA_ROOT에 복사됨을 의미합니다. 저는 양식을 사용하지 않고 이미 수천 개의 JPG를 다시 복사하고 싶지 않습니다. 왜냐하면 그들은 이미 있어야 할 곳이기 때문입니다. 나는 현재 갖고있는 모든 이미지의 파일 이름을 저장할 이미지 레코드를 만들고 싶습니다. 각 이미지 위에 반복적 인 간단한 파이썬 스크립트를 작성했지만 Image 레코드를 올바르게 작성하는 방법을 찾을 수 없습니다.
또한 중복 된 레코드를 방지하기 위해 이미지 내용의 해시를 저장하려고합니다. 예 :
import hashlib
content = open(image_filename).read()
h = hashlib.sha512()
h.update(content)
imgobj.hash = h.hexdigest()
imgobj.save()
기본 model.Model.save() 메소드를 덮어 쓰시겠습니까?
고마워, 그건 꽤 편리합니다. 유일한 단점은 내가 해싱을 투명하게 만들고 싶기 때문에 명시 적으로 모델 외부에서 생성 할 필요가 없다는 것입니다. 그러나 나는 이것이 어떻게 달리 사물을 단순화 할 수 있는지를 안다. – Cerin
방금 Django가 이미지 경로를 자동 수정하여 고유 한 것으로 보이므로 내 경우에는 잘못된 경로가 저장됩니다. 예 : 이미지 = 'myimage.jpg'를 저장하려고하면 실제로 'myimage_1.jpg'가 저장됩니다. 이것을 사용 중지하는 방법을 알고 있습니까? 나는 FileField 속성에 대한 코드를 파고 있었지만, 이것이 어디에서 끝나는 지 찾을 수는 없다. – Cerin
흠. 자동 이름 바꾸기를 사용 중지하는 방법을 모르겠습니다. get_or_create를 사용하고 해시 *를 확인하면 중복 파일이 저장되지 않아야합니다. 그렇지 않은 경우 실제 코드가 예상대로 작동하지 않는 이유를 확인해야합니다. – Brandon