1

私は Django の Web サイトでいくつかの例に従いましたが、Django がプロジェクトの一部を「アプリ」に分割することを望んでいるという考えを理解しています。

各「アプリ」には独自のモデルがあります。そのため、ユーザーがログインして一部のデータ (書籍のコレクションや著者のコレクションなど) を変更 (追加/編集/削除) できるようにするアプリを作成する場合は、そのためのアプリを作成する必要があります。

この場合、 と の 2 つのモデル クラス を含む'アプリ'ブックを作成します。クラスはそのフィールドの 1 つとして.models.pyBookAuthorBookauthor = models.ForeignKey(Author)

だからここに私の質問があります:

  1. 新しいアプリを作成した場合app、そのアプリのモデルに、同じアプリに存在しないモデルへの ForeignKey フィールドを含めることはできますappか?
  2. 前述したように、ユーザーがログインできる資格情報「テーブル」が必要です。これはどのように達成できますか?ユーザーモデルで「ユーザー」のような新しい「アプリ」を開始する必要がありますか?
  3. 「自動インクリメント」、「一意でないインデックス」、「トリガー」などの MySQL 機能をこれらのモデルにどのように組み込むのですか? または、手動または MySQL コンソール/マネージャーを介して行う必要がありますか?
4

2 に答える 2

1

他のアプリのモデルとの関係を作成することを妨げるものは何もありません。アプリは単にコードを論理的な場所にグループ化する方法です。別のアプリにある 1 つのモデルを参照する方法の例を次に示します。

これが myapp というモジュールにあるとします。次のような構文を使用して、他のアプリの他のモデルを参照できます。この例では、「auth」アプリ内に User モデルが存在します。

class MyModel(models.Model):
    ....
    user = models.ForeignKey('auth.User')

参照: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

Django には、優れた柔軟なユーザー システムが組み込まれています。新しいプロジェクトを開始すると、デフォルトで、ユーザーの作成、管理、および認証に使用できる User テーブルが作成されます。

ここにいくつかの関連情報があります。(実際には、上記の例は、組み込みのユーザー テーブルとの関係を示しています。) ユーザー フレームワークの既定の動作をカスタマイズする場合を除き、ユーザーを定義するために新しいアプリを開始する必要はありません。

Django は、主キー フィールドのレコードを自動的にインクリメントします。これに必要なデータベース オブジェクトを作成します。また、必要に応じて一意のフィールドを適用し、他の多くのカスタマイズを可能にします. 私の知る限り、Django はデータベース トリガーをサポートしていません。物事をトリガーする「Pythonic」の方法は、コードでそうすることだと思います。具体的には、Django/Python は、他のアクションの後に実行するアクションを管理します。ただ、それは私の考えです。

于 2013-05-22T04:07:17.107 に答える