0

APPの作成時にFixturesまたはSQLを使用することを示すDjangoのドキュメントを読みました。しかし、新しいユーザーが追加されるたびに同じフィクスチャを追加したいと考えています。これを行う簡単な方法がわかりません。私はsignals.pyがそれを行う方法かもしれないと思いますが、IDなしでFixtureが追加されたことを確認する方法がわかりません。

フィクスチャ ドキュメント: https://docs.djangoproject.com/en/dev/howto/initial-data/

たとえば、各ユーザーの開始タスクとして提案されている 5 つのタスクがあります。したがって、新しいユーザーが作成されるたびに、それらのタスクを新しいユーザー アカウントに追加する必要があります。タスクにはユーザーへの FK があります。

これを実現する方法についての提案をお待ちしています。

4

1 に答える 1

0

実はかなり簡単な方法があります。

どこかに初期データディクテーションを作成します。論理的な場所はどれでも構いません。

シグナルの作成: https://docs.djangoproject.com/en/dev/ref/signals/#post-save

送信者クラスを django.contrib.auth.models.User に設定します

シグナルで呼び出されるメソッドは、パラメータの 1 つとしてオブジェクト インスタンスを受け取ります。そのシグナルでは、残念ながら、ユーザーが新しいユーザーであるかどうかを確認する方法がないため、ユーザーが外部キーを介してリンクされた「スターターキット」モデルを持っているかどうかを確認する必要があります。そうでない場合は、初期データに基づいて独自のモデルを作成します。

それを行う別の方法は、django.contrib.auth.models.User を拡張し、pk なしでユーザーを保存するときにのみ呼び出される独自のカスタム シグナルをその save メソッドに追加することです。その場合、シグナルが呼び出されるたびに、新しい「スターター キット」を作成する必要があることを確認できます。

于 2014-03-05T07:37:14.350 に答える