Pythonのコンテキストマネージャって何?って言われると、「withを使ってるあれ」みたいな答え方はできるんですが、以下のような質問は答えられませんでした。というわけで、調べたことでも書きます。
続きを読むdjangoは管理コマンドを追加できるという話
今の会社で働き始める前、djangoで管理コマンドを作れることをぼくは知らなかった。
今は、普通にdjangoで作られたアプリケーションを触るし、普通に管理コマンドが作れることは知ってるし、普通に作る。
だけど、入社する前にdjangoのチュートリアルをやってただけだと、全然知らなかった。
多分、ぼくと同じような人は、結構世の中にいるような気がするので、簡単に紹介しよう。
ドキュメントは、ここをみると良いと思う。
カスタム django-admin コマンドの実装 | Django documentation | Django
ドキュメントを読んだた書いてあるけど、
myproject/myapp/management/commands/my_custom_command.py
みたいな場所に作る。なぜ、こんなに階層が深いのかなぞだと思ってる。
こんなファイルが、 my_custom_command.py
だとする。
from django.core.management.base import BaseCommand class Command(BaseCommand): def handle(self, *args, **options): print('hello command')
これで、myappがINSTALLED_APPに入っていたら、my_custom_commndが使えるようになる。
$ python manage.py my_custom_commnd hello command
パラメータとかも渡せる。詳しくはドキュメントを読むと良さそう。
django adminの一覧でカラムを増やしたい
django adminの一覧でカラムを増やしたい、と思う時はよくある
なんか、毎回同じようなことを検索して、djangoのドキュメントを探して自分で実行して確かめてる。というわけで、メモする。
例えば、こういうモデルがある。
class MyModel(models.Model): title = models.CharField(max_length=10) text = models.CharField(max_length=10) rank = models.IntegerField() def __str__(self): return self.title
そこに、以下のようなadmin定義をする。
@admin.register(MyModel) class MyModelAdmin(admin.ModelAdmin): fields = ('title', 'text', 'rank')
するとMyModelの一覧は、titleがずらっと並ぶ。rankも見たいよね。という時はある。 そういう時は、list_desplayを定義する。
@admin.register(MyModel) class MyModelAdmin(admin.ModelAdmin): fields = ('title', 'text', 'rank') list_display = ('title', 'rank')
それだけ。
詳しくはドキュメントを。
djangoでadmin画面を触ってる時に出る `Unknown field(s) ...`のエラー
djangoを触っていて、エラーが出た。
Djangoのバージョンは、1.11
以下が、エラーメッセージ。
Unknown field(s) (myfiled) specified for MyModel. Check fields/fieldsets/exclude attributes of class MyModelAdmin.
myfiledとかMyModelAdminとかは、良い感じに目で置換してもらいたい。
admin画面に登録した後に、django adminで詳細ページを開こうとした時に出るエラー。
原因は、filedsのタイポだった。
例えば、django adminに登録する時、以下のようなコードがある。
@admin.register(MyModel) class MyModelAdmin(admin.ModelAdmin): fields = ('title', 'text')
それを、例えば、以下のように書いていて、
@admin.register(MyModel) class MyModelAdmin(admin.ModelAdmin): fields = ('myfiled', 'text')
myfiledなんてフィールドがmodelに定義されてなかったら、先頭のエラーが出る。
「それがぼくには楽しかったから」を読み終わったので感想を書く
「それがぼくには楽しかったから」を読み終わった。
思ったことや感想を簡単に書く。
それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実 (小プロ・ブックス)
- 作者: リーナストーバルズ,デビッドダイヤモンド,風見潤,中島洋
- 出版社/メーカー: 小学館プロダクション
- 発売日: 2001/05/10
- メディア: 単行本
- 購入: 20人 クリック: 282回
- この商品を含むブログ (141件) を見る
どんな本?
リーナスが考えている人生の意味とか、Linuxを作ったとき何を考えていたかとか、Linuxがどうやって広がったのか、今どう思っているか、みたいな話が書いてあった。 とはいえ10年以上前の本だけど。
誰が読むべき?
この本は、読むべきとか読まないべきとか、そう言う話じゃなくて、興味あれば読んで見たら?って感じ。
個人的には、10年前の古き良きインターネットの時代の話をとりあえず知りたい、みたいなのがあるから、読んだし、リーナスがLinuxについてどう言う話をしているのかも知りたかったから読んだ。
読んで嬉しいことは?
んー、何だろう。
Unixは、小さい部品がたくさんあると言う設計哲学だけど、Linuxカーネルはコンポーネントを分けずに一つに集約しているのが印象的だった。
分けるのが良いとか集約するのが良いとか、そう言う話じゃなくて、何のために分けるのか、何のために集約するのか、と言うのが重要なのかなあ、と思ったりした。
読んでよかった?
よかったかな。個人的に気になったことは知ることができたから。
疑問に思ったことはあった?
途中、カーネルの話になったけど、わからないことが多々あった。 システムコールを実際に、意識して読んだことがないから話についていけない部分はあった。
システムコールってどんな風に使うのかなー、とか、OSのプログラムを見て見たいなあ、とか思ったりした。
印象に残ったことは?
いくつか印象に残ったことがある。
一つ目は、リーナスの人柄。リーナスは、思想が強いタイプの人というより、コンピュータやソフトウェア開発を楽しんでいるタイプの人だと思った。
あと、リーナスは、大学卒業後に、クローズドなハードウェア系の企業に就職したという話もあって、それも印象的だった。
それから、リーナスは、GNUのリチャードストールマンの思想に賛成してるというんじゃないのも印象的だった。オープンorクローズではなくて、ある時はオープン、ある時はクローズ、みたいなスタンスなのが印象的だった。
次はどう言う本を読みたい?
次は、伽藍とバザールって本を読みたいなと思ってる。手元に、もう買ってある。
- 作者: E.S.Raymond,山形浩生
- 出版社/メーカー: USP研究所
- 発売日: 2010/07/31
- メディア: 単行本(ソフトカバー)
- クリック: 1回
- この商品を含むブログを見る
まあ、あとは、もっと技術書かな。技術書は、ブログに書かなくても読んでるんだけど。