ตกลงฉันได้ลองทุกอย่างแล้วและไม่สามารถใช้งานได้
- ฉันมีโมเดล Django ที่มี ImageField อยู่
- ฉันมีรหัสที่ดาวน์โหลดรูปภาพผ่านทาง HTTP (ผ่านการทดสอบและใช้งานได้)
- ภาพจะถูกบันทึกลงในโฟลเดอร์ 'upload_to' โดยตรง (upload_to เป็นภาพที่ตั้งไว้ใน ImageField)
- สิ่งที่ฉันต้องทำคือเชื่อมโยงพา ธ ไฟล์ภาพที่มีอยู่แล้วกับ ImageField
ฉันเขียนโค้ดนี้ประมาณ 6 วิธีที่ต่างกัน
ปัญหาที่ฉันพบคือรหัสทั้งหมดที่ฉันกำลังเขียนผลลัพธ์ในลักษณะการทำงานต่อไปนี้: (1) Django จะสร้างไฟล์ที่สอง (2) เปลี่ยนชื่อไฟล์ใหม่เพิ่ม _ ไปยังจุดสิ้นสุดของไฟล์ ชื่อจากนั้น (3) ไม่ถ่ายโอนข้อมูลใด ๆ โดยปล่อยให้มันเป็นไฟล์ชื่อว่างเปล่า สิ่งที่เหลืออยู่ในเส้นทาง 'upload_to' คือ 2 ไฟล์ไฟล์หนึ่งที่เป็นรูปภาพจริงและอีกไฟล์หนึ่งที่เป็นชื่อของภาพ แต่ว่างเปล่าและแน่นอนเส้นทาง ImageField ตั้งเป็นไฟล์เปล่าที่ Django พยายามสร้าง .
ในกรณีที่ไม่ชัดเจนฉันจะพยายามอธิบาย:
## Image generation code runs....
/Upload
generated_image.jpg 4kb
## Attempt to set the ImageField path...
/Upload
generated_image.jpg 4kb
generated_image_.jpg 0kb
ImageField.Path = /Upload/generated_image_.jpg
ฉันจะทำสิ่งนี้ได้อย่างไรโดยไม่ให้ Django พยายามจัดเก็บไฟล์อีกครั้ง สิ่งที่ฉันชอบจริง ๆ เป็นสิ่งที่ทำให้เกิด ...
model.ImageField.path = generated_image_path
... แต่แน่นอนว่าไม่ได้ผล
และใช่ฉันได้ผ่านคำถามอื่น ๆ ที่นี่เช่นนี้เช่นเดียวกับ django doc ในไฟล์
UPDATE หลังจากการทดสอบเพิ่มเติมจะทำเช่นนี้เมื่อทำงานภายใต้ Apache บน Windows Server เท่านั้น ในขณะที่ทำงานภายใต้ 'runserver' บน XP มันไม่ได้ทำการกระทำนี้
ฉันนิ่งงัน
นี่คือรหัสที่ทำงานได้สำเร็จบน XP ...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()