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 に答える