初心者ジャンゴベース02

DjangoのORM操作

我々は、ファイルのデータ構造を読み取るために使用され、このファイルを、models.pyの知っている前たびに運転データを、このモジュールを取っています

 

 

共通のフィールド

  オートフィールド

int型の自動インクリメント、primary_key = Trueをパラメータに記入しなければなりません。何の自動インクリメントが存在しない場合のモデルは、その後、自動的にID列と呼ばれる列を作成するとき。

  IntegerFieldと

整数型、範囲2147483647に-2147483648インチ

  CharFieldです

文字型、MAX_LENGTHパラメータ、MAX_LENGTHを示す文字を提供する必要があります。

  DateFieldに

日付フィールド、Pythonのdatetime.date()インスタンスに対応する日付形式YYYY-MM-DD、。

  DateTimeField型

時刻フィールド、フォーマットYYYY-MM-DD HH:MM [:SS [.uuuuuu] [TZ]、Pythonのdatetime.datetimeの()インスタンスに対応します。

 

テーブル構造を作成します。

 

#models.py

django.db インポートモデル


ここにあなたのモデルを作成します壁紙。
クラスのNav(models.Model):
    名前 = models.CharField(= 10 MAX_LENGTH、ユニーク= 真、
                            verbose_nameは = ' ナビゲーション名'#のMAX_LENGTH最大数、ユニークで独特です、verbose_nameテーブル中国名 
    is_delete = models.SmallIntegerField(デフォルト= 1、verbose_name = ' 削除されました'#のデフォルトのデフォルト 
    CREATE_TIME = models.DateTimeField(verbose_name = ' 作成時間'、auto_now_add = TRUE)  は、挿入データをauto_now_add時間は、自動的に現在の時間がかかります
    = models.DateTimeField UPDATE_TIME(verbose_nameは= ' 変更'、auto_now = TRUE)  auto_nowデータを変更し、時間が自動的になります

    DEF  __str__ (セルフ):
         リターン self.nameの   #の__str__を使用すると、印刷を書かない場合はオブジェクトであり、この名前は、の値と一緒に印刷することができます

    クラスのMeta:  追加情報テーブル構造 
        verbose_name = ナビゲーションテーブル  中国名テーブル 
        verbose_name_plural = verbose_name   中国名テーブル 
        のDB_Table = NAV   #のテーブル
        #1 注文= [「UPDATE_TIME並べ替えに使用「]#データを照会、


クラスArticleこの記事は(models.Model)であった:
    タイトル = models.CharField(= MAX_LENGTH 20、verbose_name = ' 商品名' 
    内容 = models.TextField(ヌル=真、verbose_name = ' 記事の内容'#のnullはnullである 
    IMG =モデル。 ImageField(upload_to = ' article_img '、ヌル=真、verbose_name = ' 記事の絵' 
                            デフォルト = ' article_img / 1.JPG 'アップロード写真upload_toのImageFieldアップロードファイルは、自動的にセットを設定MEDIA_ROOTパスにarticle_imgを作成しますファイルアップロードモジュールを使用するフォルダ注枕をインストールする必要があります
    (= upload_to = models.FileFieldファイルfile_img 
                             verbose_name = ファイルの絵#は、唯一の違いは、すべてのファイルをアップロードするFileFieldにはできFileFieldにとのImageFieldのImageFieldが、画像形式のファイルをアップロードすることができている、と 
    is_delete = models.SmallIntegerField(デフォルト= 1、verbose_name = ' 削除しました' 
    NAV = models.ForeignKey(NAV、verbose_name = ' ナビゲーションを上記ID '、on_delete = models.DO_NOTHING、db_constraint =偽)   外部キー 
    CREATE_TIME = models.DateTimeField(verbose_name = ' 作成時刻'、auto_now_add =真)
    UPDATE_TIME= models.DateTimeField(verbose_name = ' 修改时间'、auto_now = 真)

    デフ __str__ (自己):
         リターンself.titleの

    クラスのMeta:
        DB_Tableの = ' 記事'

データベースに実行します

  Pythonは管理のPy makemigrationsの#は、移行ファイルを生成しました

  Pythonの管理Pyの移行のデータベースに同期#

 

djangoORM CRUD

これは、3つのDjangoが動作するデータベースを教え表し
輸入ジャンゴ、OSの

os.environ.setdefault(DJANGO_SETTINGS_MODULE dj_test.settings #のセットは、プロファイルジャンゴ 
django.setup()  設定をして確認する

から、ユーザーのインポートをモデルの   #は、対応する表構造ファイルを見つける

新しい 
models.Nav.objects.create(名前= 日記

これも追加されます 
nav_obj = models.Nav(名= 私は感じる、is_delete = 1を
nav_obj.save() 

お問い合わせGETメソッドを照会するには、その後、このデータは唯一のチェックアウトであることを確認することができます 
結果= models.Nav.objects.get(is_delete = 1 印刷(result.name) 

、検索結果の可能性が高いフィルタリング追加である以上 
result0 = models.Nav.objects.filter(is_delete = 1、名前= ' 私は感じる'および 
結果1 = models.Nav.objects.filter(name__contains = ' I 'ファジークエリ 
result1_1 =モデル.Nav.objects.filter(create_time__endswith = ' 84 '#のクエリが終了文字と一致する 
(create_time__startswith = result1_2 = models.Nav.objects.filterを' 2019 '#のクエリが始まる文字に一致 
result1_3 = models.Nav.objects.filter(create_time__isnull = TRUE)  問い合わせの空で 
結果2 = models.Nav.objects.filter(id__gt = 0)  0より大きい 
result3 = models.Nav.objects。フィルタ(id__gte = 1)  以上1 
result4 = models.Nav.objects.filter(id__lt = 2)  2未満 
result5 = models.Nav.objects.filter(id__range = [1 ,. 5])  範囲と 
= models.Nav.objects.filterのresult6(id__in = [1,2 ,. 3 ,. 5 ,. 6])   
result7 = models.Nav.objects.exclude(ID = 1)  は、番号1を除いて、除外

からジャンゴ.db.models インポートQ 

result8は、Models.Nav.objects.filter =(Q(= name__contains ' 6。')| Q(= name__contains ' 3 '))  または

result9 Models.Nav.objects.all =()フィルタ。(name__contains = ' 6。'すべての取得されたデータテーブル 
result10 models.Nav.objects.all =()。フィルター(name__contains = ' 6 ').count()   #1 の数取得してもよいCOUNT 
result11 = models.Nav.objects.all()を。(フィルタ= name__contains ' 6 ').values()  値が返される辞書表示 
result12 = models.Nav.objects.raw(' NAVからSELECT *'ネイティブSQLの実行

#のレビュー

このメソッドは、再割り当ての値を変更することである 
N- = models.Nav.objects.get(= IDを。1)   #1 parimyキー 
n.name = ' WOアルバム2 " 
n.is_delete 1 = 
n.save()

models.Nav.objects.all()。更新(is_delete = 0)  更新すべてのデータテーブル 
models.Nav.objects.filter(name__contains = ' I ').Update(is_delete。1 = )   条件

#が削除

models.Nav.objects.allを()。)(削除   すべてのデータテーブル削除 
models.Nav.objects.filter(= id__lt。3).Delete()  は、条件に応じて削除します

N- = models.Nav.objects.get(上記ID = 3に述べた)   #を個別に削除parimyキー
n.delete() 

逆引き 
art_obj = models.Nav.objects.get(名前= ' マイ日記3 ' 印刷(art_objを.article_set.filter())  外部キーの逆引き参照

#のnav_obj.article_set.add(art_obj)#追加
#のnav_obj.article_set.remove(art_obj)#を削除
#のnav_obj.article_set.clearを()#空

 

おすすめ

転載: www.cnblogs.com/RainBol/p/11718456.html