我正在尝试在用户创建帐户后更新其个人资料照片。我正在使用一个抽象用户模型,该模型连接到一个名为Person的模型。对于其他上下文,我将我的应用程序连接到AWS以部署到Heroku
我已经设置了一个表单、模型、url和视图,但我肯定我遗漏了一些拼图
<form action="{% url 'update-photo' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<table class="table-form">
{{ form|crispy }}
</table>
<input type="submit" class="btn btn-lg custom-bg">
<br><br>
</form>
class User(AbstractUser):
is_active = models.BooleanField(default=False)
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
upload = models.FileField(default='core/static/images/default_avatar.png')
class UpdatePhotoForm(forms.ModelForm):
class Meta:
model = Person
fields = ('upload',)
@login_required
def update_photo(request):
person = Person.objects.get(user=request.user)
from core.forms import UpdatePhotoForm
if request.method == "POST":
form = UpdatePhotoForm(data=request.POST, instance=request.user.person)
if form.is_valid():
person = form.save(commit=False)
person.save()
return redirect('profile')
else:
form = UpdatePhotoForm()
return render(request, 'core/edit_profile.html', {'form': form})
path('update_photo/', core_views.update_photo, name='update-photo'),
表单提交时没有任何错误,但不会实际更新用户的照片。我可以在管理员网站上更改照片,但不能通过表单。任何帮助都将不胜感激
您必须使用以下代码从请求对象获取文件字段:
form=UpdatePhotoForm(data=request.POST,files=request.files,instance=request.user.person)
相关问题 更多 >
编程相关推荐