Как загрузить изображение профиля, соответствующее пользователю?
models.py
from django.db import models
from django.forms import fields, ModelForm
from .models import UploadImage
from django import forms
class UploadImageForm(ModelForm):
class Meta:
# To specify the model to be used to create form
model = UploadImage
# It includes all the fields of model
fields = ['picture']
forms.py
from django.db import models
from django import forms
from django.contrib.auth.models import User
# Create your models here.
class UploadImage(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
picture = models.ImageField(default='default.jpg', upload_to='profile_pics')
views.py
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.contrib.auth.models import User
from django.contrib import messages
from Profile.models import UploadImage
from Profile.forms import UploadImageForm
def profile(request):
if request.method == 'POST':
form = UploadImageForm(request.POST, request.FILES, instance=request.user.profile)
if form.is_valid():
form.save()
return HttpResponse('uploaded')
else:
form = UploadImageForm(instance=request.user.profile)
username = request.user.username
first_name = request.user.first_name
last_name = request.user.last_name
email = request.user.email
userinfo = {
'username': username,
'first_name': first_name,
'last_name': last_name,
'email': email,
'form': form,
}
return render(request, 'profile.html', userinfo)
Я хочу, чтобы пользователь загружал изображение в свой профиль. Я создал модель для загрузки изображения и изображения загружаются, но другие поля, которые распознают, что это загруженное изображение этого пользователя, пусты в базе данных, также после изменения некоторых кодов миграции не происходит. нужно значение по умолчанию для поля пользователя в модели UploadImage. Помогите!!!
Насколько я понял, у вас возникла проблема с миграцией после изменения чего-то в models.py. Я думаю, вы можете попробовать следующее. Picture = models.ImageField(blank=True, null=True, upload_to='profile_pics', default='default.jpg') Это позволит принимать значения без каких-либо изображений. После этого вы можете удалить все значения, которые уже были в вашей базе данных, и вернуться к предыдущей модели, если хотите.