Я использую Django 1.5, и хочу, чтобы пользователи могли загружать фотографии. Я хочу, чтобы фотографии были сохранены в другом месте в зависимости от того, какой идентификатор пользователя. Например, если пользователь загружает файл, а идентификатор пользователя - 1 (идентификатор/уникальный первичный ключ, присвоенный каждому пользователю, когда пользовательский объект создается из общей модели пользователя Django), я хочу, чтобы изображение сохранялось в СправочникDjango - имеет разные MEDIA_ROOT для разных пользователей
myPorjectFolder/myApp/static/site_media/images/1(the users ID)/uploadedPhotos
Вот как я думаю, что я должен это делать. В settings.py, добавьте следующую строку:
MEDIA_ROOT = '/home/userName/myProject/myApp/site_media/static/images/'
, а затем в models.py, создать модель, как это:
from django.db import models
from django.contrib.auth.models import User
class UserImages(models.Model):
user = models.OneToManyField(User)
photo = models.ImageField(upload_to=currentUsersID/uploadedPhotos) #I know this won't work.. how would I make it work?
я прав? Или это совсем другое, чем то, что я думаю?
Edit: мой forms.py это:
class UploadImageForm(forms.Form):
image = forms.ImageField()
гм о порядке , но когда вы делаете «upload_to = get_file_path», не get_file_path() принимает два параметра? Что такое экземпляр и имя файла и как функция get_file_path() знает, что они есть, даже если она не предоставляется upload_to = get_file_path? – user2719875
'' 'instance''' является экземпляром класса UserImages, который сохраняется, а имя файла - это имя файла, который сохраняется в свойстве фотографии. – schillingt
hm okay Я просто добавил свои forms.py в свой пост. На мой взгляд, если я делаю «user = request.user», а затем «UserImages.objects.create (user = user, photo = form.cleaned_data ['image']», то он автоматически добавит изображение в userID/uploadedPhotos/filename? – user2719875