スキップしてメイン コンテンツに移動

投稿

1月, 2015の投稿を表示しています

インターン(その3・肉)

豊橋技術科学大学の近藤です。 29日の夜、築地にある「大阪焼肉・ホルモン ふたご」さんに連れて行って頂けました。 度のお肉も美味しかったのですが、名物の「名物黒毛和牛のはみでるカルビ」は、 そのサイズにびっくり、いろいろな部位が頂けて非常に美味しかったです。 網から溢れんばかりの肩ロースを、それぞれの部位に切り分けていただきました。 特に、中央にあるロース芯(リブロース)は、口の中でとろけて絶品でした。  このロース芯、牛肉の等級を決定する際に基準になるそうで、 霜の量によって1~5の肉質等級が付けられます。 この等級が、牛全体の等級になるそうです。 等級決定に重要なロース芯ですが、明確な境目はなく、人間のカンによって線引きされています。 等級をつけることは、画像解析によって脂身の割合を出すことによってできますが、 ファジーな処理を行わなければならない、ロース芯の抽出の自動化は難しいようです。 ご馳走様でした。

インターン(その2)

豊橋技術科学大学の近藤です。 前回に引き続き、AdminSiteのオーバーライドに関して まとめてみます。 基本的にはModelAdminのオーバーライドと同様に、 if perms.get('change', False): try: model_dict['admin_url'] = reverse('autoview:%s_%s_changelist' % info, current_app=self.name) except NoReverseMatch: pass このようにページ名を変更していけばOKでした。 (前回は付け忘れていましたが、autoviewという名前空間をつけました) オーバーライドし、ページ名を変更する関数は、 __init__ register index app_index さらに、全ユーザに権限を与えるため、has_permissionの オーバーライドを行います。 これによりadminサイトと同様に、 urls.pyのurlpatternsに url(r'^autoview/', include(autoview.urls)), を追加し、 使用したいモデルをadmin.site.registerのように、 autoview.register(Hoge) とすれば、使用できました。 もちろんAdminのようにリストに表示したいものを list_displayに登録することで変えることも可能です。 ただ、このままではAdminサイトの更新履歴と同じデータベースを 利用しているので、その点を修正する方法について 次回の記事にまとめようと思います。

インターン(その1)

初めまして。 1月8日から2月24日まで、株式会社MNUに実務訓練としてお世話になっています、 豊橋技術科学大学の近藤です。 実務訓練の期間中に学んだ事、感じた事を、 こちらのブログにまとめていこうと考えています。 成果を出し、プログラマとして成長できるよう、 頑張りたいと思います。 現在作成中の、DjangoのAdminサイト出力機能を利用した、 汎用的なフォーム出力機能について、まとめてみたいと思います。 DjangoのAdminサイト出力を実装しているのは、 AdminのIndex部分:django.contrib.admin.sites 各モデルのに関する部分:django.contrib.admin.options で行っているようです。 今回は最初に、モデルのインスタンス追加・編集・一覧・削除 機能の実装から始めました。 ModelAdmin内の response_add, response_change, response_post_save_add, response_post_save_change, delete_view にて、TemplateResponseを返してページ表示を行っています。 なので、viewsでこれらの関数を呼び出せば、 Adminページと同様のものが出力されます。 しかしながら、リンク先まで同じであったり (つまり、adminページに飛んでしまう) 管理者権限を持っていないと使えないなど、問題があるため ModelAdminをoverrideしたクラスを作成し、実装することにしました。 Responseを返す関数内で、adminのページをリンク先として指定しているので、 ページ名の変更を行う必要がありました。 また、テンプレート内でも同様の部分があるため、 変更しました。 # ex. In response_add if post_url_continue is None:     post_url_continue = reverse( '%s_%s_change' , %         (opts.app_label, opts.model_name),  変えた名前でurlを用意し、viewsに記述した関数でそれぞ