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を()#空