Django - изображение не сохраняется в папке upload_to при просмотре через страницу, но изображение загружается при загрузке через страницу администратора - PullRequest
0 голосов
/ 03 марта 2020

Я создал страницу редактирования профиля вместе с ее видом для добавления изображения профиля и других деталей, изображение почему-то не сохраняется в папке, указанной в модели. Но когда я пытаюсь сделать то же самое через Django admin, это работает, и изображение сохраняется в указанном месте. Примечание: у меня есть enctype = "multipart / form-data" в форме.

**views.py**

image = request.FILES.get('fileupload')
 user = request.user
           user_exists = Users.objects.filter(phone=user)

           if user_exists:
                data = UserProfile.objects.filter(user_id=user)
                if data:
                     data.update(
                          image=image,
                     )
                     return redirect('/users/edit')
                else:
                     data_create = UserProfile.objects.create(
                          image=image,user_id=user
                     )
                     data_create.save()
                     return redirect('/users/edit')
      else:
           return redirect('/users/edit')

**models.py**
class MyUser(AbstractBaseUser, PermissionsMixin):

phone = models.CharField(primary_key=True, max_length=12, unique=True)

class UserProfile(models.Model):

user = models.ForeignKey('eac.MyUser', models.DO_NOTHING)
fname = models.CharField(max_length=255, blank=True, null=True)
lname = models.CharField(max_length=255, blank=True, null=True)
last_updated = models.DateTimeField(blank=True, null=True)
image = models.ImageField(upload_to='user/%Y/%m/%d')

**settings.py**

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, '/media')

**urls.py**

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns = format_suffix_patterns(urlpatterns)

1 Ответ

1 голос
/ 03 марта 2020

Немного о логике c здесь не имеет смысла, особенно в следующих строках:

# confusing lines
user = request.user
user_exists = Users.objects.filter(phone=user)  # <-- Here
if user_exists:
    data = UserProfile.objects.filter(user_id=user) # <-- Here

Я не уверен, как вы делаете здесь связь, без filter(...).exists(), он не должен возвращать True/False, если какая-либо запись существует в базе данных. В любом случае, вы можете просто поставить следующие коды вместо кода выше:

user_profiles = request.user.userprofile.all()  # reverse relation
user_profiles.update(image = image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...