2017-04-02 22 views
0

を追加する際に、重複挿入を検出するのは、2つのモデルがあると仮定しましょう、AとB:は、多対多の関係

私が知る限り、Djangoはデフォルトで重複する多対多の関係を許可していません。だから私はの同じインスタンスを複数回追加することはできません。

しかし、問題はここではAのインスタンスを別のクエリでフェッチしてから、それらをループして1つずつ追加します。重複関係を検出するにはどうすればよいですか? add()メソッドは何か有用なものを返しますか?

+0

'add'メソッドを呼び出す前に' b.children.count() 'を保持する変数を使用することを決めました。これは、アイテムを追加した後に新しい値と比較した後です。 しかし、これは一時的な解決策であり、(クエリセットで 'count()'を呼び出すたびにデータベースにヒットするため) – mrdaliri

答えて

0

source codeを見ると、Djangoはまずデータベースに存在するエントリがあるかどうかを確認し、新しいものだけを追加します。ただし、発信者には何も情報は返されません。

実際に重複を検出する必要があるのか​​、それともデータベースに追加されていないことを確認したいだけなのかは不明です。後者の場合はすべてが問題ありません。それが前者の場合、データベースを叩くことはできません。掲載結果を本当に心配している場合は、スルーテーブルの確認と更新をいつでも行うことができます(つまり、add()を再実装します)。