私の Web ページのサインアップビュー (以下) は、Django の認証モデルUserを介して新しいユーザーを作成し、その新しく作成されたユーザーの ID を使用して、独自のモデルaccount.Usersを介してさらに情報を追加します。私の問題は、新しいユーザーの ID を 2 番目のモデル ( account.Usersの ForeignKey 列) に渡しているにもかかわらず、列 *user_id* が非 null 制約に違反しているというエラーが引き続き発生することです。
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()
このエラーの原因は何ですか?
*cmodel.user_id* をuserIdに設定する以外に、最初のステップで作成したユーザーオブジェクト、および文字列と int (それぞれ「1」と 1) に設定しようとしました。毎回同じエラーが発生します。また、フィールドをcmodel.userに変更しようとしました。Django のエラー ページから、変数userIdに実際に値が含まれていることもわかります。