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

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

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

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')
delfenes
Благодарю! Помогло!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB