【发布时间】:2016-09-18 16:03:12
【问题描述】:
经过几个小时尝试更新 views.py 中的 ImageField,我需要您的帮助:
型号:
class ImageTeam(models.Model):
image = models.ImageField(upload_to="imageTeam/", null=False)
team = models.OneToOneField(Team,on_delete=models.CASCADE,related_name="theImage", null=False)
查看:
def update_team(request, idTeam):
try :
team = Team.objects.get(id = idTeam)
except Team.DoesNotExist :
return redirect(teams)
...
if request.method == "POST" :
form = updateTeamForm(request.POST, request.FILES)
if form.is_valid() and form.has_changed() :
team.name = form.cleaned_data["name"]
...
imageForm = form.cleaned_data["image"]
if imageForm :
if hasattr(team, 'theImage') :
team.theImage.image = imageForm
print(team.theImage.image) #Good it prints "<ImageFieldFile: imageName.jpg>"
team.theImage.save() #save doesn't works!
print(team.theImage.image) #Bad it prints "<ImageFieldFile: None>"
else :
#works!
ImageTeam.objects.create(image = imageForm, team=team)
...
模板:
<form method="POST" enctype="multipart/form-data" action="{% url 'update_team' team.id %}" class="form-signin">
{% csrf_token %}
...
<div class="row">
{{ form.image }}
</div>
...
表格:
class updateTeamForm(forms.ModelForm):
image = forms.ImageField(widget=forms.ClearableFileInput(attrs={'id':'image_team'}))
...
class Meta :
model = Team
exclude = ['image',...]
我尝试了很多解决方案(获取实例并保存,使用request.FILES['image'],直接写入路径...)
那么为什么 imageField 没有更新呢? 如果我今天能解决这个问题,我会很高兴
【问题讨论】:
标签: django one-to-one