1

我正在尝试找到存储创建对象的用户的方式,并且我想自动执行此操作。我找到了一些东西,但没有什么对我有用。这是代码:

模型.py:

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

表格.py:

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

视图.py

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

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

我见过关于put:

usuari = models.ForeignKey(User, blank=True, editable=False) but

但我不知道什么时候可以在字段中设置用户。

谢谢指教!

4

1 回答 1

3

usuari您可以从您的中隐藏TrackForm,因此用户无法选择它:

class TrackForm(forms.ModelForm):   
    class Meta:
        model = Track
        exclude = ('usuari',)

然后,将您的替换formulari.save()为:

track = formulari.save(commit=False)
track.user = request.user
track.save()

这是一个常见的用例,在 Django文档中有详细说明。

于 2013-02-25T19:40:17.970 回答