2013-02-25 97 views
1

我試圖找到存儲創建對象的用戶的方式,並且我想自動執行此操作。我發現了一些東西,但沒有爲我工作。下面是代碼:將當前用戶存儲在django模型的字段中

Models.py:

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

Forms.py:

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

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

我已經看到了關於認沽:

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

但我不知道我什麼時候可以在現場設置用戶。

感謝您的建議!

回答

3

您可以從您的TrackForm隱藏usuari,因此用戶無法選擇它:

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

,然後替換你formulari.save()有:

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

這是一個常見的情況和在Django docs中有詳細描述。

+0

對不起,如果這是一個容易的工作,我真的與Django新...現在我得到以下錯誤: 列「usuari_id」中的空值違反非空約束。 我嚐到了usuari = models.ForeignKey(User,null = True) 但同樣的情況 – user1781245 2013-02-25 20:09:53

+0

這可能意味着'request.user'是'None',即沒有用戶登錄。閱讀關於'login_required'裝飾器。 – 2013-02-25 20:24:30

+0

這不是問題所在。用戶登錄...不過,謝謝你的幫助! – user1781245 2013-02-25 20:56:05

相關問題