自分のDB(postgres)に 'unique_together'を設定したいと思います。問題は、すでにDBに重複がある可能性があるため、移行がうまくいかないことです。だから、私が見るように - 展開の前に、すべての複製を削除するためにスクリプトを実行する必要があります(それぞれ1つだけ残してください)。私はDjango Custom Commandでやっている方が好きです。Django - DBから重複したレコードを削除する
テーブル 'mapping'は、 - Id、user_id、user_role、project_id、user_typeのようになります。 私はそれらのすべてのために 'unique_together'を設定したいと思います。 そして、私はそれが重複した属性が含まれているオブジェクトのリストを返しますが -
duplicates = (Mapping.objects.values('project_id', 'user_id', 'user_type', 'user_role').annotate(
count=Count('id')).values('project_id', 'user_id', 'user_type', 'user_role').order_by().
filter(count__gt=1))
重複行を取得するために使用するスクリプト。例えば :
QuerySet [{'user_id': '2222', 'user_type': '1', 'user_role': '1', 'project_id': UUID('c02bda0e-5488-4519-8f34-96b7f3d36fd6')}, {'user_id': '44444', 'user_type': '1', 'user_role': '1', 'project_id': UUID('8c088f57-ad0c-411b-bc2f-398972872324')}]>
は直接のIdsを取得する方法はありますか? 良い方法がありますか?
おそらくこれはhttps://stackoverflow.com/questions/23908971/find-duplicate-entries-in-database-for-specific-を見つけて、重複を除去するために役立ちます。フィールド – user8845619