ってことは全然ないんですが済むなら済ましたいと思ってました
Model のインスタンスの詳細を表示するには django.views.generic.list_detail.object_detail 使います
object_detail は template に Model の instance を object という名前で渡します
そう、Model の instance だけ渡ってしまうのです、困りました
例えば
name = models.CharField(u'お名前', max_length=256)なんてしてた場合
「お名前」にアクセスする方法が無いのです
でも template に「お名前」とか書き込むの嫌だしなぁ〜
でー、ググって出てきたページがこちら
とりあえず、な generic view の object_list の拡張 - muddy brown thang
(以前略)まじっすか、_meta っすか
def render(self, name):
field_verbose_name = gettext(
self._queryset.model._meta.get_field(name).verbose_name)
(以下略)
なんか、generic view で code の数減らそうとか言っといて
結局そんなもん持ち出さにゃいかんというのは何か辛くない?
そう思って先生にご相談申し上げてみたところ
「自分の設計をまず疑った方がいいっすよ」
「フォームを使わないのに使おうとしてる時点でおかしい」
「つかコード呼んでくださいよw」
「ipython で ?? を憶えてください。」
というあたたかいお言葉を沢山頂いたので不貞寝しました
つわけで _meta は 1 つの正解だったということみたいなんですが
form 使えばいいらしいということも聴いたので少し調べると
Model の instance は __dict__ って持っていて
まぁ幸い ModelForm は用意してたので dict を食わせてやったら
できた form の fields の中の field の label とかでも何とかなりました
object_dict = object.__dict__こんな感じ
form = PersonForm(object_dict)
fields = [ {'label':y.label, 'value':object_dict[x]}
for (x, y) in form.fields.items()]
ん〜、何か、間違っちゃないかしら、これでいいのかしら
0 件のコメント:
コメントを投稿