以下代码使用表单来保存新的用户头像图片,但是我无法通过删除旧的头像并使用新的更新来更新。我尝试了很多不同的代码变体。
有人能指出我正确的方向吗?解释为什么会发生这种情况和简短的例子会非常有帮助。非常感谢所有帮助。
模型
class Profile(models.Model):
user = models.ForeignKey('auth.User')
avatar = Image..................
视图
@login_required
def profile(request, pk):
profile = Profile.objects.get(user=pk)
pf = ProfileForm(request.POST, request.FILES, instance=profile)
if request.method =="POST":
if pf.is_valid():
profile.avatar.delete() #doesn't work
pf.save()
return render_to_response('template.html', {
'profile': profile,
'pf':pf
}, context_instance=RequestContext(request))
模板
<form enctype="multipart/form-data" action="" method="POST"> {% csrf_token %}
{{ pf }}
<input type="submit" value="Submit" id="submit" />
</form>
答案 0 :(得分:1)
关系就像objects
属性一样。 MyModel.objects.delete()
也无效。您需要执行profile.avatar.all().delete()
更新:以上内容适用于多对多关系。可以直接从外键访问delete()
。
但是,删除外键时,Django会删除关联的数据库行并使外键的pk
/ id
属性无效,但它不清除数据对于外键立即。从技术上讲,你可以这样做:
profile.avatar.delete()
profile.avatar.save()
并且,您最终会得到相同的对象,只能使用不同的主键。