【发布时间】:2020-05-09 23:38:03
【问题描述】:
图像更改在 django admin 中起作用,但是当我尝试在 html 表单中更改相同时,除了图像字段之外的所有其他更改都被反映。
views.py
>def edit_profile(request):
if request.method == 'POST':
form = EditProfileForm(request.POST, instance=request.user.userprofile)
if form.is_valid():
form.save()
return redirect('view_profile')
else:
form = EditProfileForm(instance=request.user.userprofile)
args = {'form': form}
return render(request, 'post/update_profile.html', args)
update_profile.html
{% extends "post/header.html"%}
{% block content %}
<div class="container">
<form method="post" enctype='multipart/form-data'>
{% csrf_token %}
<p >Bio: {{ form.bio }}</p>
<p> Phone {{ form.phone }}</p>
<p> Website : {{ form.website }} </p>
<p> Image : {{ form.image }}</p>
<button type="submit">Submit</button>
</form>
<br>
</div>
{% endblock content %}
forms.py
>class EditProfileForm(UserChangeForm):
class Meta:
model = UserProfile
fields = (
'bio',
'phone',
'website',
'image',
)
model.py
>class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
bio = models.CharField(max_length=100, default='',blank = True)
website = models.URLField(default='',blank = True)
phone = models.IntegerField(default=0,blank = True)
image = models.ImageField(upload_to='profile_image',default = 'octocat.png')
def __str__(self):
return self.user.username
def create_profile(sender, **kwargs):
if kwargs['created']:
user_profile = UserProfile.objects.create(user=kwargs['instance'])
post_save.connect(create_profile, sender=User)
【问题讨论】:
标签: django django-forms django-templates django-views django-admin