ベーステーブルの役割(継承)
クラスBaseModel(models.Model): CREATE_TIME = models.DateTimeField(verbose_name = ' 作成時間'、auto_now_add = 真) is_delete = models.BooleanField(verbose_name = ' 削除'、デフォルト= False)が クラスのMeta: 抽象的な = Trueの #ありModelクラス属性データベースの移行は、テーブルを生成するために完了しません クラス公開(BaseModelを): 名前 = models.CharField(= verbose_name 「発行者名」、MAX_LENGTH = 32 ) アドレス = models.CharField(= verbose_name "アドレス'MAX_LENGTH = 64 ) 電話 = models.CharField(verbose_name = ' 電話'、= 32 MAX_LENGTH)
静的なメディアファイルの設定(画像のパス)
settings.py: MEDIA_URL = ' /メディア/ ' MEDIA_ROOT = os.path.join(BASE_DIR、' メディア' ) models.py: クラスの著者(BaseModel): 名前 = models.CharField(verbose_name = ' 作者'、MAX_LENGTH = 32 ) アイコン = models.FileField(upload_toの= ' アイコン'、デフォルト= ' アイコン/ icon.jpg ') #往路とデフォルトパス 電話= models.CharField(verbose_name = ' 電話'、= 32 MAX_LENGTH ) 他のカスタムクラスモデルの表示フィールド: @Property DEFのauthor_detail_list(自己): author_detail_arr = [] のための著者でself.authors.all(): author_dic = {} author_dic [ ' アイコン' ] = settings.MEDIA_URL + STR(著者.icon) #1 author.iconオブジェクトタイプ、シリアル化しない author_detail_arr.appendを(author_dic) リターン author_detail_arr
外部キーフィールドモデルのテーブルを処理する方法
外部キープロセス: 1.リバース・クエリ:related_name = 「XXX 」 2.表関係(db_constraint + :on_delete) db_constraint = データベース論理決意操作なし偽解離したデータベース、すなわち、しかし操作は、論理データベースORMによって決定されます on_delete = デフォルトのカスケード削除のでmodels.CASCADE削除をカスケード接続する、多くのテーブルへの多くは、記述する必要はありません on_delete = models.SET_NULL、ヌル= Trueの場合、削除する場合、外部キーフィールドが空である on_delete = models.SET_DEFAULT、=デフォルト0削除します外部キーフィールドが0のとき on_delete削除、外部キーフィールドが処理されていない場合= models.DO_NOTHING
ケース:
クラスAuthorDetail(BaseModel): CHOICE_SEX = ( (0、' M ' )、 ( 1、' 女性' ) ) 年齢 = models.IntegerField(verbose_name = ' 年齢' ) 性別 = models.IntegerField(verbose_name = ' 性別'、選択肢= CHOICE_SEX、デフォルト= 0) 情報 = models.TextField(verbose_name = ' 個人情報' ) の著者 = models.OneToOneField(verbose_name = " 著者'=に' 著者'db_constraint = Falseを、on_delete = models.CASCADE、related_name = ' 詳細")