Ошибка ограничения NOT NULL: registratie_inkomen.pg_id - PullRequest
0 голосов
/ 05 мая 2020

Это мои модели:

class PersoonGegevens(models.Model):
    # Voornaam en achternaam
    voornaam = models.CharField(max_length=265,)
    achternaam = models.CharField(max_length=265)

    #username
    user = models.OneToOneField(User, on_delete=models.CASCADE)


class inkomen(models.Model):
        pg = models.ForeignKey(PersoonGegevens, on_delete=models.CASCADE)
        inkomenfield = models.CharField(max_length=100)

Это форма:

class inkomenForm(forms.ModelForm):

    class Meta():
        model = inkomen
        fields = ('inkomenfield',)

Это мое мнение:

def tijdelijk(request):
    #User id
    user = request.user.id

    if request.method == 'POST':
        incoming = inkomenForm(data=request.POST)

        if incoming.is_valid():
            incoming.save()
            return HttpResponse("saved")

        else:
            x = incoming.errors
            print (x)
            return HttpResponseRedirect('/tijdelijk')
    else:
        incoming = inkomenForm()

    return render(request, 'index/tijdelijkeindex.html', {'inkomen':incoming})

Я пробовал:

incoming.save(commit=False)
incoming.pg = user
incoming.save

также читал документацию по встроенным формам django. Но я действительно не получаю

Итак, я получаю следующую ошибку: (ограничение NOT NULL не удалось), и я знаю, что это происходит, потому что мне нужно назначить pg.id, и я знаю, что могу сделать это, добавив поле в form.py и позвольте пользователю выбрать идентификатор. Но на самом деле я хочу, чтобы pg = зарегистрированный пользователь.

1 Ответ

0 голосов
/ 05 мая 2020

Вам необходимо присвоить переменной возвращаемое значение form.save(commit=False), возвращаемое значение - это созданный (но не зафиксированный в базе данных) объект модели

obj = incoming.save(commit=False)
obj.pg = user
obj.save()
...