1

我是 Django 的新手,我到处都找到了,但我还没有找到我要找的东西,这似乎很容易。当用户上传新轨道时,我需要在模型轨道中保护当前用户 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})

谢谢!

4

1 回答 1

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

因此,用户将被预先填写,并且该字段不会显示给用户。

完整的文档在这里。

于 2012-10-28T19:16:14.567 回答