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

投稿

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__registerindexapp_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に記述した関数でそれぞれ、
snipper_change, snippet_add, snippet_listを…