Я знаю, что есть много решений для этой проблемы, но они кажутся немного отличными от моих. Вот мой models.py:Значение null в столбце «user_id» нарушает непустое ограничение Django
from __future__ import unicode_literals
from django.db import models
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.postgres.fields import HStoreField
# Create your models here.
class Events(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
name = models.CharField(max_length=32)
start = models.CharField(max_length=32)
end = models.CharField(max_length=32)
Очень простая таблица, и я хочу, чтобы первичный ключ в Auth_user
быть внешним ключом в моей Events
таблицы. Поэтому, конечно, это означало бы, что User
должен быть зарегистрирован и аутентифицирован для этого. В моем views.py у меня есть:
def createEvent(request):
if request.method == "POST":
user = request.user
print (user) # Check for Authentication
name = request.POST['name']
start = request.POST['start']
end = request.POST['end']
Events.objects.create(
name = name,
start = start,
end =end,
)
Оператор печать печатает текущий пользователь, вошедший в Я могу подтвердить, что эта часть действительно показывает, что пользователь вошел в системе, и что этот пользователь находится в auth_user
таблицы. с уникальным id
. Однако, когда я пытаюсь отправить форму, я получаю нулевое значение для столбца user
. Есть идеи?
'Events.objects.create (name = name, start = start, end = end)' Пользователь нигде не установлен ... В отдельной заметке вы должны использовать [ModelForm] (https: // docs .djangoproject.com/en/1.10/themes/forms/modelforms /) для чего-то подобного, сэкономит много работы. –
@jens, вероятно, это был ответ. Также сообщите оператору, как выполнить правильную проверку is_authenticated. – e4c5
Ждите, извините, не должен ли пользователь поставить ставку в models.py? 'user = models.ForeignKey (settings.AUTH_USER_MODEL)' – anderish