2012-10-28 39 views
1

我是Django中的新成员,并且我在任何地方都可以找到,但是我没有找到所需的东西,而且看起来很简单。 当de用户上传新曲目时,我需要在模型曲目中安全取消当前用户标识。 我只找到了这个:将当前用户ID保存在django模型中

class Track(models.Model): 
    ... 
    usuari = models.ForeignKey(User) 

但是,这会导致用户的用户型动物之间进行选择。我想在隐藏的营地自动安全地保护当前用户。

class TrackForm(forms.ModelForm): 
    class Meta: 
     model = Track 

def pujar_track(request): 
if request.method=='POST': 
    formulari = TrackForm(request.POST, request.FILES) 
    if formulari.is_valid():    
     formulari.save() 
     return HttpResponseRedirect('/') 
else: 
    formulari = TrackForm() 

return render(request,'trackForm.html', 
    {'formulari':formulari}) 

谢谢!

回答

2

这是instance参数的用处。

# form 
class TrackForm(forms.ModelForm): 
    class Meta: 
     model = Track 
     exclude = ('useri',) 

# view 
@login_required() 
def pujar_track(request): 
    track = Track(usuari=request.user) 

    if request.method=='POST': 
     formulari = TrackForm(request.POST, request.FILES, instance=track) 
     if formulari.is_valid():    
      formulari.save() 
      return HttpResponseRedirect('/') 
    else: 
     formulari = TrackForm(instance=track) 

    return render(request,'trackForm.html', 
     {'formulari':formulari}) 

所以用户将被预先填充并且该字段不会显示给用户。

完整doc在这里。

相关问题