2013-02-25 6 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

Вы можете скрыть 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 docs.

+0

Прошу прощения, если это легкая работа, я действительно новичок в django ... Теперь я получаю следующую ошибку: Значение null в столбце «usuari_id» нарушает непустое ограничение. Я пробовал с помощью usuari = models.ForeignKey (User, null = True) , но те же события – user1781245

+0

Это, вероятно, означает, что 'request.user' является' None', то есть пользователь не вошел в систему. Прочитайте документы о Декодер 'login_required'. –

+0

Это не проблема. Пользователь зарегистрирован ... Тем не менее, спасибо за вашу помощь! – user1781245

Смежные вопросы