[解決済み] django - get() は複数のトピックを返します。
2023-06-11 19:50:36
質問
ある属性と、その属性に関連付けられた MからM を持つ属性と関連づけようとすると、このようなエラーが発生しました。
get() は1つ以上のトピックを返しました -- 2つ返されました!
このエラーが何を意味するのか、また、このエラーを回避する方法を事前に教えていただけませんか?
モデル
class LearningObjective(models.Model):
learning_objective=models.TextField()
class Topic(models.Model):
learning_objective_topic=models.ManyToManyField(LearningObjective)
topic=models.TextField()
の出力は
LearningObjective.objects.all()
[<LearningObjective: lO1>, <LearningObjective: lO2>, <LearningObjective: lO3>]
の出力は
Topic.objects.all()
[<Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>, <Topic: Topic object>]
ビュー
def create_themen(request):
new_topic=Topic(topic=request.POST['topic'])
new_topic.save()
return render(request, 'topic.html', {'topic': topic.objects.all()})
def create_learning_objective(request):
new_learning_objective=LearningObjective(learning_objective=request.POST['learning_objective'])
new_learning_objective.save()
new_learning_objective_topic=Topic.objects.get(topic=request.POST['topic'])
new_learning_objective_topic.new_learning_objective_topic.add(new_learning_objective)
return render( request, 'learning_objective.html', {
'topic': Topic.objects.all(),
'todo': TodoList.objects.all(),
'learning_objective': LearningObjective.objects.all()
})
どのように解決するのですか?
<ブロッククオート
get()
は1つ以上のトピックを返しました -- それは2つを返しました!
上記のエラーは、以下の方法で問い合わせた特定のパラメータに関連する複数のレコードがDBに存在することを示しています。
get()
というように
Model.objects.get(field_name=some_param)
このようなエラーを避けるためには、常にスキーマの設計に従ってクエリーを実行する必要があります。 あなたの場合、テーブルを設計する際に 多対多の関係 のテーブルを設計したので、明らかにそのフィールドの複数のレコードが存在することになり、それが上記のエラーが発生する理由です。
そこで
get()
を使うべきでしょう。
filter()
で、複数のレコードを返します。例えば
Model.objects.filter(field_name=some_param)
django でクエリを作成する方法については、こちらをご覧ください。 ここで .
関連
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
django request.data を修正する AttributeError: 属性を設定できない
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
Django の ForeignKey パラメータの使用法
-
Djangoキャッシュの説明
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Djangoです。文字列からモデルを取得する?
-
[解決済み] シグナルハンドラは django プロジェクトのどこにあるべきですか?
-
[解決済み] Djangoで複数のfilter()を連鎖させる、これはバグ?
-
[解決済み] Djangoで異なる設定でUnitテストを行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み] Django REST フレームワーク: 非モデルシリアライザー
-
[解決済み] Django ManyToMany filter()
-
[解決済み] models.pyでDjangoの設定変数を参照するには?
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] django のクラスベースのビューで permission_required デコレータを使用する方法
-
[解決済み] egg_infoエラーでpipからインストールできない
-
[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?
-
[解決済み] list_display - メソッド用のブール型アイコンです。