【发布时间】:2020-12-01 11:26:15
【问题描述】:
我的应用程序有一个系统,用户可以在其中上传他的个人资料图片。我后来创建了这个功能,所以使用了外键方法
这是模型
class Profile_Pic(models.Model):
user = models.ForeignKey(User, default='', null=False, on_delete=models.CASCADE, related_name='userPic')
profile_pic = StdImageField(upload_to='photos', default='', blank=True, )
和html页面
{% extends 'datas/base.html' %}
{% block content %}
{% load static %}
<h1 class="text-center" style="color: white">Add Profile Picture</h1>
<br><br>
<div class= "col-md-6.offset-md-3">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% if form.errors %}
<div class="alert alert-warning alert-dismissable" role="alert">
<button class="close" data-dismiss="alert">
<small><sup>x</sup></small>
</button>
<p>Data Error, Please Check Again.....</p>
{% for field in form %}
{% if field.errors %}
{{ field.errors }}
{% endif %}
{% endfor %}
</div>
{% endif %}
{{ form.as_p }}
<input type="submit" value="Save" class="btn btn-primary">
</form>
</div>
{% endblock %}
视图
@login_required
def profile_pic(request):
if request.method == 'POST':
form = Photo(request.POST, request.FILES)
if form.is_valid():
form.instance.user = request.user
form.save()
messages.success(request, 'Your Profile Picture Has Been Updated Successfully')
return redirect('profile')
else:
form = Photo()
return render(request, 'datas/user_image.html', {'form': form})
最后是表格
class Photo(forms.ModelForm):
class Meta:
model = Profile_Pic
fields = ['profile_pic']
widgets = {
'Add Profile Pic': forms.FileInput(attrs={'class': 'form-control'}),
}
现在当我们从管理站点上传时,系统会自动删除同一模型上以前的照片,但是当从用户界面执行相同操作时,每次都会保存一个新模型,所以有没有办法让我可以更新已经创建的模型,所以我可以更新图片吗?
谢谢你.....
【问题讨论】:
标签: python html django django-models imagefield