在django模型中保存当前用户ID

时间:2012-10-28 19:02:29

标签: django django-models django-forms

我是Django的新人,我已经找到了所有地方,但我找不到我想要的东西,这似乎很容易。 当用户上传新曲目时,我需要在模型Track中保护当前用户ID。 我才发现这个:

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})

谢谢!

1 个答案:

答案 0 :(得分: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就在这里。