我是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})
谢谢!
答案 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就在这里。