【发布时间】:2020-04-18 03:16:48
【问题描述】:
当我尝试更新模型上的图像时,由于某种原因没有通过表单验证。
我也试过不使用PIL库更新它,还是不行。
class UpdateProfile(UpdateView):
template_name = 'dashboard/edit-profile.html'
form_class = UserForm
success_url = None
def get_object(self, queryset=None):
return User.objects.get(username=self.kwargs['username'])
def form_valid(self, form):
self.instance = form.save(commit=False)
user = self.get_object()
user.full_name = self.instance.full_name
user.username = self.instance.username
user.email = self.instance.email
user.description = self.instance.description
im = Image.new(self.instance.main_image)
user.profile_image = im
user.ig = self.instance.ig
user.fb = self.instance.fb
user.pinterest = self.instance.pinterest
user.twitter = self.instance.twitter
user.save()
return render(self.request, self.template_name, self.get_context_data())
型号Image属性
profile_image = models.ImageField(upload_to=save_profile_image,
default='/static/img/blog/avatars/user-01.jpg')
def save_profile_image(instance, filename):
if instance:
return '{}/{}'.format(instance.id, filename)
来自 html 的表单数据。
<form action="" class="tm-edit-product-form" method="post" enctype="multipart/form-data">
<div class="custom-file mt-3 mb-3">
<input id="fileInput" type="file" name="main_image" style="display: none"
accept="image/*"/>
{{ form.profile_image }}
</div>
</form>
无论如何,POST 请求通过但对象没有更新。问题在于ImageField。为什么它不能正常工作?
【问题讨论】:
标签: django django-views python-imaging-library django-class-based-views