我的網頁的註冊視圖(下)創建通過Django的身份驗證模型的新用戶,用戶,然後使用該新創建的用戶的ID,通過我自己的模型,帳戶添加更多的信息。用戶。我的問題是,雖然我傳遞新用戶的ID到第二模型(account.Users的ForeignKey的列),我不斷收到該列* USER_ID *違反了非空約束的錯誤:Django的寫入數據庫,IntegrityError
IntegrityError at /account/signup/
null value in column "user_id" violates not-null constraint
這裏是我的模型的相關部分:
class Users(models.Model):
user = models.ForeignKey(User, unique=True, null=True, blank=True)
firstname = models.CharField(max_length=100, blank=True, default='')
而且我的觀點的相關部分:
def signup(request):
if request.method == 'POST' and request.POST['firstname']:
user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password'])
userId = user.id
form = UsersForm(request.POST, request.FILES)
if form.is_valid():
cmodel = form.save()
cmodel.user_id = userId
cmodel.firstname = request.POST['firstname']
cmodel.save()
什麼可以b e此錯誤的原因?
除了設定* cmodel.user_id *等於用戶id,我自己也嘗試將其設置等於用戶在第一步驟中創建的「1」 1對象,以及一個字符串和INT(和, 分別)。我每次都得到相同的錯誤。我也嘗試將字段更改爲cmodel.user。我也可以從Django的錯誤頁面中看出變量userId確實包含一個值。
另一個相關信息:我也重啓了apache和postgres。 – jball037
您是否在Postrgres中檢查過表的模式,也許您是在沒有'null = True'的情況下首先創建它的,然後再修復它,但從未實際更新模式。 –
它一直有null = True – jball037