2021/12/11
- Just PythonのDocumentのModelsの基本読了
- 以下メモ
- – status = models.PositiveSmallIntegerField(default=1, verbose_name=”公開ステータス”, help_text=”1:下書き 2:公開 3:削除”, validators=[MinValueValidator(1), MaxValueValidator(2)])
- – from django.core.validators import MaxValueValidator, MinValueValidator
- – require_authentication = models.BooleanField(default=False, varbose_name=”ログインフラグ”, help_text=”Trueの場合ログインしているユーザーしか閲覧できない” )
- def Meta:
db_table = “category”
verbose_name_plural = “記事カテゴリ” - df __str__(self):
return self.title - df status2text(self):
status2text = {1:”下書き” 2:”公開” 3:”削除”}
return status2text[self.status] - statusが3のデータは削除としています。
- 実際にデータを削除せず、statusを3に変えることで削除されたデータとして扱うすることで、何かあったときでもデータを復元することが可能になる
- モデルで扱う数値データは、フロントエンドでの取り扱いも考えて文字列に変換するメソッドを定義しておくと良い
- require_authenticationのようにモデル内でユーザーのログイン状態に応じたルールを基底しておくのも1つの方法
デコレーターとどちらを用いるべきかは用検討 - on_delete= models.CASCADE, models.SET_NULL, models.PROTECT
- データに対する処理を行う際の推奨順は、models.py>views.py>templates
APIで持ってきたデータはviews.pyなどで処理
models.pyで処理しておくことで、views.pyでは関数を呼び出すだけで良くなったり、1から何度も記述しなく済むので便利 - raise Exception(“例外警告”)
他の例外処理でよく用いられるものは何か - def save(self, *args, **kwargs):でオーバーライド
return super().save(*args, **kwargs) - (self, *args, **kwargs)が何を表しているのか
self以外に渡された引数のうち、位置引数は変数argsにタプルで受け取り、キーワード引数は変数kwargsに辞書として受け取る - super()の部分では、Articleクラスのsaveメソッドを呼び出し、引数には受け取った引数をそのまま渡している。
super().saveと親クラスmodes.Modelのsaveメソッドを呼び出しているのがポイント
self.saveとは異なっていると思われる。super()が何を指すのか後できちんと確認。 - file = models.FileField(upload_to=’contents/file’)
image = models.ImageField(upload_to=’contents/image’)
このアップロード先をその内に変えていかなければならなそう。 - category = models.ForeignKey(Category, on_delete=models.CASCADE)
ForeignKeyは多対1の関係を作るため、Articleに対してCategoryは1つ、Categoryに対するArticleは複数。
タグのように多対多の関係を作るにはどうしらよいのか調べる。 - テーブルに新しくフィールドを追加する場合はnull=Trueを指定。
しかし、これが良い方法なのか不明なのと、テーブルの更新がきちんとできるか後で確認 - OneToOneField, ManyToManyFieldの使い方は?
- Just PythonのDocumentのチュートリアルの読了
- STATIC_URL, STATIC_ROOT(collectstaticを行なった際の場所指定)
- STATICFILES_DIRS = [ os.path.join(BASE_DIR, ‘static/’) ]
- staticファイルの場所指定について詳細確認
- templates/app_name/htmlファイル
- プロジェクトのurls.pyにて
from django.conf import settings
from django.conf.urls.static import static
urlpatterns + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - static()の動きを理解する必要
- projectFile/static/assets/css, js, img
- Just PythonのDocumentのORMとクエリの読了
- article.save() Article.create()
- article = Article.objects.get(id=5)
- Article.objects.filter(id=5).update(is_published=False)
filterの場合は複数の該当データの更新がされてしまうので注意 - データを書き換えてsaveするより.update()する方が早い
- delete()
2021/12/12
- さぼり
2021/12/13
- select_related, prefetch_relatedによるクエリの最適化
モデル同士の紐付けをしすぎるとデータベースへの接続数が多くなりページ読み込み速度が遅くなる
prefetch_related(‘comments’) 対多のときは複数形 - [Django]QuerySetのfilterメソッドの使い方まとめ 読了
https://codelab.website/django-queryset-filter/ - 42Tokyo Piscine開始
- Git
https://eng-entrance.com/git-clone - ハードリンクvsソフトリンク
https://wa3.i-3-i.info/word1152.html
http://www2.it-shikaku.jp/top30.php?hidari=1_02_3.php&migi=km1_02.php&title=1.02.3%20%E3%83%8F%E3%83%BC%E3%83%89%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A8%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF - ファイル権限変更
https://qiita.com/shisama/items/5f4c4fa768642aad9e06 - ls -lT
- touch -t 日時 ファイル名
- ln -s
- ln -il
- lsオプションについて
https://eng-entrance.com/linux_command_ls
https://qiita.com/chihiro/items/6e1404c41e1236a9efe1 - git log オプション
https://qiita.com/ma5aki-Y/items/2f5d57207bbd8a57b15e - git add 取り消し
https://qiita.com/yukure/items/89562e5eb1d03995dc5b - gitで追加しているファイル/ignoreしているファイル
https://qiita.com/blue0513/items/1525a7f06d708e901690
https://zenn.dev/pictogram/articles/f81920695d68b6 - git ignoreを生成するサービス
https://blog.web-apps.tech/gitignore-from-cli/ - ファイル検索
https://sole-color-blog.com/blog/567/
2021/12/14
- さぼり
2021/12/15
- ファイルを1バイトだけ増やす
https://tutuz-tech.hatenablog.com/entry/2020/12/27/205245 - echo a > a.txt
echo b >> a.txt - cd ../../folder
- ディレクトリ内のすべてのファイルを移動
mv * ../
2021/12/16
- Djangoのget_object_or_404, get_list_or_404を使ってDBからレコードを取得する
https://www.nblog09.com/w/2019/05/11/django_or_404/ - 条件複数の場合は、get_object_or_404(Mode, pk=1, name=’name’)
2021/12/17
- データベースの種類
Oracle Database、Microsoft SQL Server、PostgreSQL、MySQLなど