При создании записи объявляется ошибка: NOT NULL constraint failed: faq.user_id, но пользователь был объявлен в представлениях

Как видите, form.user = request.user объявляется после p fom.save(commit=false), но ошибка сохраняется. кто-нибудь может мне помочь?

либо с request.user, либо без request.user ошибка сохраняется. помня, что я вошел как администратор, и в /admin функциональность работает правильно, вставка null=True создает запись, но функциональность не верна.

models.py

from django.db import models
from django.utils import timezone
from .. import settings


class Faq(models.Model):

    CAT_FAQ_CHOICES = (
        (0, 'Selecione'),
        (1, 'FAQ Todos'),
        (2, 'FAQ Psicologo'),
        (3, 'FAQ Paciente'),
        (4, 'FAQ Empresa'),
    )

    idfaq = models.AutoField(primary_key=True)
    titulo = models.CharField(
        verbose_name='Titulo da Dúvida', max_length=100, null=False, blank=False)
    descricao = models.TextField(
        verbose_name='Descrição', null=True, blank=True)
    data_cadastro = models.DateTimeField(
        verbose_name='Data de Cadastro', auto_now=True)
    is_active = models.BooleanField('Ativado | Desativado', default=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    tipofaq = models.IntegerField(choices=CAT_FAQ_CHOICES,default=0)

    def __str__(self):
        return self.titulo

    class Meta:
        db_table = 'faq'
        verbose_name = 'faq'
        verbose_name_plural = 'faqs'

views.py

@login_required
def criar_faq(request):

    if request.user.is_paciente:
        form = FaqForm(request.POST or None, initial={
                       'user': request.user.paciente, 'tipofaq': 3})

        custom_template_name = 'area_pacientes/base_paciente.html'
        if form.is_valid():
            form = form.save(commit=False)
            form.user = request.user
            form.save()
            return redirect('faq:listar_faq')
        else:
            print(form.errors)
        return render(request, 'area_administrativa/faq/novo-faq.html',
                      {'form': form,
                       'custom_template_name': custom_template_name})

    elif request.user.is_psicologo:
        form = FaqForm(request.POST or None, initial={
                       'user': request.user.psicologo, 'tipofaq': 2})

        custom_template_name = 'area_psicologos/base_psicologo.html'
        if form.is_valid():
            form = form.save(commit=False)
            form.user = request.user
            form.save()
            return redirect('faq:listar_faq')
        else:
            print(form.errors)
        return render(request, 'area_administrativa/faq/novo-faq.html',
                      {'form': form,
                       'custom_template_name': custom_template_name})

    elif request.user.is_company:
        form = FaqForm(request.POST or None, initial={
                       'user': request.user.is_company, 'tipofaq': 4})

        custom_template_name = 'area_empresa/base_empresa.html'
        if form.is_valid():
            form = form.save(commit=False)
            form.user = request.user
            form.save()
            return redirect('faq:listar_faq')
        else:
            print(form.errors)
        return render(request, 'area_administrativa/faq/novo-faq.html',
                      {'form': form,
                       'custom_template_name': custom_template_name})

    else:
        form = FaqForm(request.POST or None, initial={'tipofaq': 1})
        custom_template_name = 'area_administrativa/base_adm.html'

        if form.is_valid():
            form.save()
            return redirect('faq:listar_faq')
        else:
            print(form.errors)
        return render(request, 'area_administrativa/faq/novo-faq.html',
                      {'form': form,
                       'custom_template_name': custom_template_name,
                       })

forms.py

class FaqForm(forms.ModelForm):
     
    class Meta:
        
        model = Faq
        fields = ['titulo', 'descricao','tipofaq']

        widgets = {
            'titulo': forms.TextInput(
                attrs={'class': 'form-control',
                       'placeholder': "Título da Dúvida"}
            ),
            'descricao': forms.Textarea(
                attrs={'class': 'form-control',
                       'placeholder': "Digite seu texto aqui..."}
            ),
            'tipofaq':forms.Select(
                attrs={'class':'form-control'}
            )
        }
Вернуться на верх