1
下面的代碼使用表單來保存一個新的用戶頭像圖片,但是我無法得到這個刪除舊頭像並刪除舊的頭像。我已經嘗試了許多不同的代碼變體。在使用django表單保存前刪除一個對象字段
難道有人指出我正確的方向。爲什麼會發生這種情況的解釋和簡短的例子將是非常有幫助的。所有的幫助非常感謝。
模型
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>
對不起,我是Django的新手。你可以請進一步解釋,以幫助我理解。你的意思是?當然,使用「profile = Profile.objects.get(user = pk)」和profile.avatar這一行來定位所需的圖像。我似乎沒有得到任何使用您的建議命名的屬性。 – Stu 2011-05-23 15:47:07
我還收到以下內容:經由配置文件實例可訪問的管理員。我可以先保存然後刪除,但這會讓事情更難以找到正確的圖像? – Stu 2011-05-23 16:02:09
對不起,我假設'delete'不起作用,你實際上正在處理多對多的關係。如果'avatar'只是一個外鍵,那麼'delete'應該可以工作。然而,認識到'profile.avatar'會在請求的整個過程中保留它的數據是非常重要的(由於查詢緩存),但是如果你測試'profile.avatar.pk',它應該是null,表明它不會'實際上已經存在了。 – 2011-05-23 16:10:46