Je peux télécharger la photo de profil mais je ne peux pas la modifier.
Le formulaire se remplit avec l'option de recherche d'images, mais lorsque je clique sur enregistrer, il n'est pas mis à jour dans le modèle, alors qu'il fonctionne correctement dans l'administration.
views.py
def create_form(request):
form = AlbumForm(request.POST or None, request.FILES or None)
if form.is_valid():
album = form.save(commit=False)
album.user = request.user
album.image= request.FILES['image']
album.save()
return render(request, 'about.html', {'album': album})
context = {
"form": form,
}
return render(request, 'create_form.html', context)
def profile_edit(request):
if request.method == 'POST':
form = AlbumForm(request.POST, instance=request.user.album)
if form.is_valid():
album = form.save(commit=False)
album.user = request.user
form.save()
return redirect(reverse('about'))
else:
form = AlbumForm(instance=request.user.album)
args = {'form': form}
return render(request, 'profile_edit.html', args)
models.py
class Album(models.Model):
user = models.OneToOneField(User)
image = models.FileField()
forms.py
class AlbumForm(forms.ModelForm):
class Meta:
model = Album
fields = ['image']
profil_edit.html
{% extends 'base.html' %}
{% block content %}
<form action="{% url 'profile_edit' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">save</button>
</form>
<div>
<img src="{{ user.album.image.url }}" class="img-responsive">
</div>
{% endblock %}