学习是最好的投资!
Django は「主キーの明示的な定義」を必要としません
ID フィールド (主キー、自動インクリメント) がテーブルに自動的に追加されます
手動で定義した主キーを削除することを検討できます
投稿オブジェクトが Post() ではなく PostForm() であることを明確に確認する必要があります。PostForm フォーム処理オブジェクトには初期 ID 値がありますが、渡さない場合は request.POST 値に ID 値がありますか?投稿が Post() オブジェクトの場合は、ID 値
詳しく説明されていない情報が 1 つあります。PostForm それをどのように定義するかです。
PostForm
PostForm をこのように定義すると、PostForm(request.POST).save() を呼び出すことで望む結果を得ることができます。
PostForm(request.POST).save()
しかし、post = form.save(request.user) の使用方法が間違っているため、PostForm はこのように定義されていません。ModelForm の save メソッドには、commit = False または commit=True というパラメーターが 1 つしかありません。データをデータベースに保存するかどうか、デフォルトは True。
post = form.save(request.user)
ModelForm
save
commit = False
commit=True
Django は「主キーの明示的な定義」を必要としません
ID フィールド (主キー、自動インクリメント) がテーブルに自動的に追加されます
手動で定義した主キーを削除することを検討できます
投稿オブジェクトが Post() ではなく PostForm() であることを明確に確認する必要があります。PostForm フォーム処理オブジェクトには初期 ID 値がありますが、渡さない場合は request.POST 値に ID 値がありますか?投稿が Post() オブジェクトの場合は、ID 値
が必要です。詳しく説明されていない情報が 1 つあります。
PostForm
それをどのように定義するかです。
リーリーPostForm
をこのように定義すると、PostForm(request.POST).save()
を呼び出すことで望む結果を得ることができます。しかし、
ソースコードについてはリンクを参照post = form.save(request.user)
の使用方法が間違っているため、PostForm はこのように定義されていません。ModelForm
のsave
メソッドには、commit = False
またはcommit=True
というパラメーターが 1 つしかありません。データをデータベースに保存するかどうか、デフォルトは True。