Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как сохранять в моделе залогиненого пользователя? [RSS Feed]

#1 Ноя. 22, 2015 16:43:49

delfenes
Зарегистрирован: 2012-08-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сохранять в моделе залогиненого пользователя?

Есть залогиненный пользователь, который выполняет на сайте задание (отправляет через форму). Выполненые задания сохраняются в админку. Нужно знать какой пользователь какое задание выполнил.
На данный момент у меня такой код:

class PassTheTask(models.Model):
    STATUS_CHOICE = (
        ('WAIT', u'Ожидает проверки'),
        ('PASS', u'Сдано успешно'),
        ('UNPASS', u'Сдано не успешно')
    )
    title = models.ForeignKey(Exercise, verbose_name=u'Задание')
    text = models.TextField(u'Описание')
    date = models.DateTimeField(u'Дата сдачи задания', auto_now_add=True)
    user = models.ForeignKey(User)
    status = models.CharField(u'Статус', max_length=32, choices=STATUS_CHOICE,
                              default='WAIT')

Есть форма:
class PassForm(ModelForm):
    class Meta:
        model = PassTheTask
        fields = ['title', 'text', 'link']

Есть вьюха:
def passthetask(request):
    if request.method == 'POST':
        form = PassForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data['title']
            text = form.cleaned_data['text']
            link = form.cleaned_data['link']
            u = request.user
            user = u.id 
            form.save()
            return render(request,'exercise/passed.html')
        else:
            form = PassForm(request.POST)
    form = PassForm()
    return render(request, 'exercise/pass.html', {'form': form})

При этом после отправки формы ошибка:

null value in column “user_id” violates not-null constraint
DETAIL: Failing row contains (20, ds, ds, 2015-11-22 14:11:17.592087+00, WAIT, 2, null).

Как сохранять в моделе с заданиями пользователя сдавшего задание?

Офлайн

#2 Ноя. 22, 2015 18:05:32

balalay12
Зарегистрирован: 2014-07-28
Сообщения: 92
Репутация: +  4  -
Профиль   Адрес электронной почты  

Как сохранять в моделе залогиненого пользователя?

Попробуй так

if form.is_valid():
    title = form.cleaned_data['title']
    text = form.cleaned_data['text']
    link = form.cleaned_data['link']
    instance = form.save(commit=False)
    instance.user = request.user
    instance.save()
    return render(request,'exercise/passed.html')

Офлайн

#3 Ноя. 24, 2015 01:49:10

delfenes
Зарегистрирован: 2012-08-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сохранять в моделе залогиненого пользователя?

Благодарю! Помогло!

Офлайн

  • Начало
  • » Django
  • » Как сохранять в моделе залогиненого пользователя?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version