2

私は自分のモデルをdjangoで作成して実行しましたmanage.py syncdb

既存のアプリに新しいモデルを追加するまでは、すべて問題ありませんでした。再度実行syncdbすると、重複したエントリがauth_parmissionテーブルに挿入されました。「admin」アプリからのエントリーログにも。

新しいモデルを削除し、データベースをドロップし、空のモデルを作成して実行するテストを行いましたsyncdb。これにより、既存のフィクスチャから初期データがロードされました。

「syncdb」を再度実行すると (新しいモデルを追加せずに)、同じことが起こりました: 重複したエントリがauth_permissionテーブルに挿入されました。

何が起こっているのか、またそれらの重複したエントリを回避する方法について何か説明はありますか?

ありがとう

4

1 に答える 1

4

ほとんどの場合、最初のデータ フィクスチャには からのエントリが含まれていますauth_permission。Django は最初に syncdb 中にこれらを作成し、次にフィクスチャを実行します。その後、フィクスチャはそれらを再度作成します。

Django 1.3 以降を実行している場合は--exclude authdumpdata管理コマンドを使用してフィクスチャを作成できます。それ以外の場合は、含める必要があるすべてのアプリ/モデルを手動でリストする (authデフォルトではそうではありません) か、後でフィクスチャを手動で編集してauthエントリを削除する必要があります。

于 2011-12-28T22:19:24.603 に答える