Ich bin in der Lage, Fotos in den Medienordner hochzuladen. Mein Problem ist, dass ich sie beim Hochladen nicht in einem bestimmten Ordner speichern kann. Ich möchte, dass das Bild in einem eindeutigen Ordner gespeichert wird, basierend auf einer ID, die an die Django-Ansicht übergeben wird. Unten ist der Code, den folgenden Fehler führt:Django ImageField speichern an Standorten
views.py", line 90, in orderdetails settings.MEDIA_ROOT + '/orders/' + str(orderid) + '/' + image) TypeError: coercing to Unicode: need string or buffer, InMemoryUploadedFile found
if request.method == 'POST':
# Loop through our files in the files list uploaded
if not os.path.exists(settings.MEDIA_ROOT + '/orders/' + str(orderid)):
os.makedirs(settings.MEDIA_ROOT + '/orders/' + str(orderid))
for image in request.FILES.getlist('files[]'):
# Create a new entry in our database
new_image = UploadedImages(client_order=client, image=image.name)
# Save the image using the model's ImageField settings
filename, ext = os.path.splitext(image.name)
new_image.image.save("%s-%s%s" % (filename, datetime.datetime.now(), ext),
settings.MEDIA_ROOT + '/orders/' + str(orderid) + '/' + image)
new_image.save()
Wenn ich nur Bild verwenden es in den Medienordner finden spart gerade. Welcher ist der Code unten? Ich weiß, dass ich mit upload_to einen Ordner in meinem Modell eingerichtet habe. Trotzdem bin ich mir nicht sicher, wie ich es auf einen Ordner setzen soll, der auf dem ordierid basiert.
if request.method == 'POST':
# Loop through our files in the files list uploaded
if not os.path.exists(settings.MEDIA_ROOT + '/orders/' + str(orderid)):
os.makedirs(settings.MEDIA_ROOT + '/orders/' + str(orderid))
for image in request.FILES.getlist('files[]'):
# Create a new entry in our database
new_image = UploadedImages(client_order=client, image=image.name)
# Save the image using the model's ImageField settings
filename, ext = os.path.splitext(image.name)
new_image.image.save("%s-%s%s" % (filename, datetime.datetime.now(), ext), image)
new_image.save()