Djangoのモデルの内部クラスのメタ説明

メタDjangoのモデルクラスは内部クラスで、彼は行動特性のいくつかのモデルをDjangoの使用しました。

カスタムメタデータモデルにクラス「クラスのMeta」によって構築されました

任意のデータは、フィールドではありません:モデルのメタデータがあります

 

 

クラスのUserInfo(AbstractUser):
     '' ' 
    用户表紙
    ''' 

    NID = models.AutoField(PRIMARY_KEY = TRUE)
    CREATE_TIME = models.DateTimeField(verbose_name = ' 创建时间'、auto_now = TRUE)
    telphone = models.CharField(MAX_LENGTH = 11 、null = Trueで、ユニーク= TRUE)
    avater = models.FileField(= 'avater /' upload_to、dafult = 'アバター/ defualt.png') 
    のブログ=へ= models.OneToOneField(' ブログ'、to_field = ' NID ' null = Trueの場合、on_delete = models.CASCADE)

    クラスのMeta: 
        verbose_name = verbose_name_user = ' 用户表' 
        のDB_Table = ' ユーザー'

 

1. app_label

app_labelこのオプションは1例のみで使用されている、あなたのモデルクラスでmodels.pyファイルは、そのアプリケーションモデルクラスを指定する必要があり、この時、デフォルトのアプリケーションパッケージにはありません。その後、あなたは次のようであるかを指定する必要があり、たとえば、あなたはクラスの他の部分でモデルを作成し、このモデルは、クラスmyappのに属しています:

app_label='myapp'

2. DB_Tableの

DB_Tableのは、カスタムデータベースのテーブル名を指定するために使用されます。Djangoのモデルは、このプロパティの指定によって定義されたテーブル名から使用したい場合は、一定のルールに従って対応するデータベーステーブル名を生成するために、デフォルトのデータを持っている、など

table_name = 'ユーザー'

このパラメータが提供されている場合、Djangoはテーブルの名前としてapp_label +「_」+モジュール名を使用しています。

あなたのテーブル名がSQL予約語である、またはPythonの変数名に使用できない文字が含まれている場合 - 特に文字を - それは引用符で列名とテーブル名の舞台裏で自動的にあなたのためのDjangoには関係ありません。

 

3. db_tablespace

いくつかのデータベースは、Oracleなどのデータベース・テーブル・スペースを、持っています。

あなたはdb_tablespaceによってどのデータベース・テーブル・スペース上のモデルに対応するデータベーステーブルを指定することができます。

 

4. get_latest_by

最新の()メソッドがありますDjangoの管理方法なので、最近の行を取得することです。あなたは、フィールドのデータモデルのDateFieldまたはDateTimeField型のタイプを持っている場合は、このオプションによって、最新のを指定することができます()は、フィールドに応じて選択されます。

一つの名前のDateFieldまたはDateTimeField型のフィールドこのオプションが提供されている場合、モジュールは、「最新の」オブジェクト(フィールドに応じて)を取得するためにget_latest()関数を持っています。

get_latest_by = "order_date"

 

5.managed

Djangoのモデルクラスを自動的にマッピングするデータベース表に基づいて生成されるので、あなたがDjangoのにしたくない場合は、あなたはFalseに管理値を設定することができます。

デフォルト値は、Trueでこのオプションジャンゴまたは移行は、データベーステーブルがTrueの移行、または操作を削除することができます。この時、Djangoはデータベース内のテーブルのライフサイクルを管理します

Falseの場合、それは、作成、削除、および他の操作するためのデータベーステーブルを実行しません。既存のテーブル、データベースビューなどで使用することができ、他の操作は同じです。

 

6.order_with_respect_to

このオプションは、一般的には、関連するオブジェクトを指し、多くの関係の中で使用されています。オブジェクトの後、それがソートされているに関連付けられているオブジェクトを見つけることです。このプロパティを指定した後、あなたが設定したり、オブジェクトのソートに戻ることができたことでget_XXX_order()とset_XXX_order()メソッドを取得します。

例えば、PizzaTopppingピザはそうするために、ターゲットに関連付けられている場合:

order_with_respect_to = 'pizza'

 

7.オーダリング

このフィールドは、Djangoのモデルオブジェクトは、フィールドがソートされたレコードの結果セットを返さ伝えることです。たとえば、次のコード:

= [注文' ORDER_DATE ' ] 
 #を押すと昇順に 
注文= [ ' -order_date ' ] 
 #1 、降順を押す-降順 
注文= [ ' ?ORDER_DATE ' ] 
 ランダムな順序を,? ランダム示し 
注文= [ -pub_date 作成者]
 著者に下降及び上昇PUB_DATEために

なお:関係なく、あなたが並べ替えるために使用する方法多くの分野、管理者は、最初のフィールドだけを使用していません

 

8.権限

あなたが設定されている場合、主にDjangoの管理者管理モジュールで使用するための権限は、このプロパティは、より読みやすいで説明指定されたメソッド許可を。

オブジェクトを作成するには、オブジェクトが管理者が設定されている場合は、追加の権限が必要な、各オブジェクトを追加、削除および変更の権限が自動的に作成されている男(オプションに応じて)次の例では、追加の許可:. Can_deliver_pizzasを指定します。

permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)

(permission_code、human_readable_permission_name):この要素は、リストの2-タプルまたはタプル、タプル2-フォーマットの前記二つの要素です。

 

9.unique_together

このオプションunique_together:あなたは二つのフィールドの一意性を維持するために必要な場合に使用します。

これは、Djangoのadminとデータベース層ながら(つまり、関連UNIQUE文がCREATE TABLEステートメントに含まれている)の制限になるだろう。たとえば:姓と人の姓の両方の組み合わせは一意である必要があり、あなたが設定する必要があります。

unique_together = (("first_name", "last_name"),)

 

10.verbose_name

verbose_nameの意味は、非常に単純で、より読みやすい名前からモデルクラスを与えることです:

= = verbose_name verbose_name_user ' ユーザーテーブル'

このオプションを指定しない場合、Djangoは代わりにクラス名のマングドバージョンを使用します:キャメルケースはキャメルケースになります。

 

11.verbose_name_plural

このオプションは、次のような、モデルの複数形が指定されているものです。

 

verbose_name_plural = " "

このオプションを指定しない場合、Djangoはverbose_name +「s」を使用します。

 

12.abstract

     このプロパティは、現在のモデルクラスで定義されている抽象クラスではありません。いわゆる抽象クラスは、適切なデータベーステーブルではありません。一般的に、我々はいくつかのパブリックプロパティフィールドを要約するためにそれを使用して、これらのフィールドを継承することができますそのサブクラスを継承します。

 

人間の例は、次のコードは、抽象クラスです。従業員は、サブクラスがヒト継承され、その後、syncdbの実行コマンドの実装では、人間のテーブルを生成しません。しかし、それは人間がフィールドに継承含み、Employeeテーブルを生成します。同じパブリックプロパティはヒトを継承することができるカスタマー添加後モデルクラスを仮定する。

クラス人間(models.Model):
    名前 = models.CharField(MAX_LENGTH = 100 
    GENDER_CHOICE =((uは' M '、U ' 男性')、(U ' F '、U ' 女性' )、)
    性別 =モデル。 CharFieldです(MAX_LENGTH = 2、選択肢= GENDER_CHOICE、ヌル= 真)
     クラスのMeta:
        抽象 = 真の
 クラスの従業員(人間):
    joint_date = models.DateField()
 クラスのお客様(人間):
    FIRST_NAME= models.CharField(MAX_LENGTH = 100 
    birth_day = models.DateField()

 

上記のコード、Pythonのmanage.pyのsyncdbの実行への出力を実行した後。人間の表を見ることができ、作成されていません。

$のpython manage.py syncdbの実行
...テーブルの作成
、テーブルの作成myapp_employee
myapp_customerテーブルを作成
するカスタムSQLをインストールする...
インデックスをインストール...
見つかりませんでした備品。

 

おすすめ

転載: www.cnblogs.com/jinfanfu/p/11466127.html