如何更新现有模型实例的配置文件图片?

2024-03-28 23:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在用户创建帐户后更新其个人资料照片。我正在使用一个抽象用户模型,该模型连接到一个名为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'),

表单提交时没有任何错误,但不会实际更新用户的照片。我可以在管理员网站上更改照片,但不能通过表单。任何帮助都将不胜感激


Tags: 用户core模型form表单modelsrequestupdate