Journals、volumes、volume_scanInfo など、いくつかのモデルを定義しました。
ジャーナルには複数のボリュームを含めることができ、ボリュームには複数の scanInfo を含めることができます。
私がやりたいことは、
- ジャーナルの管理ページで、巻のリストをインラインで表示したい(完了)
- 前のリストにある各ボリュームをその管理ページに接続し、ボリュームを編集するためのフォームとその「スキャン情報」のリストをインラインで表示できるようにします。
だから私は次のようなものを望みます:
Journal #1 admin page
[name]
[publisher]
[url]
.....
list of volumes inline
[volume 10] [..(other fields)..] <a href="/link/to/volume/10">Full record</a>
[volume 20] [..(other fields)..] <a href="/link/to/volume/20">Full record</a>
それから
Volume #20 admin page
[volume number]
[..(other fields)...]
......
list of the scan info inline
[scan info 33] [..(other fields)..] <a href="/link/to/scaninfo/33">Full record</a>
[scan info 44] [..(other fields)..] <a href="/link/to/scaninfo/44">Full record</a>
私がやろうとしたのは、コードを作成するモデル メソッドを定義し、それを管理者の「ボリューム インライン」を定義するクラス内で使用しようとすることですが、機能しません。
言い換えると
モデル「Volume」の内部には次のようなものがあります:
def selflink(self):
return '<a href="/admin/journaldb/volume/%s/">Full record</a>' % self.vid
selflink.allow_tags = True
そして
class VolumeInline(admin.TabularInline):
fields = ['volumenumber', 'selflink']
model = Volume
extra = 1
しかし、次のエラーが発生します。
Exception Value: 'VolumeInline.fields' refers to field 'selflink' that is missing from the form.
何か案が?
ありがとう、ジョバンニ
ベストアンサー1
アップデート:Django 1.8 以降では、これが組み込まれています。
古い答え:
結局、簡単な解決策を見つけました。
linked.html
のコピーであるという新しいテンプレートを作成しtabular.html
、このコードを追加してリンクを作成しました。
{% if inline_admin_form.original.pk %}
<td class="{{ field.field.name }}">
<a href="/admin/{{ app_label }}/{{ inline_admin_formset.opts.admin_model_path }}/{{ inline_admin_form.original.pk }}/">Full record</a>
</td>
{% endif %}
LinkedInline
次に、継承する新しいモデルを作成しましたInlineModelAdmin
#override of the InlineModelAdmin to support the link in the tabular inline
class LinkedInline(admin.options.InlineModelAdmin):
template = "admin/linked.html"
admin_model_path = None
def __init__(self, *args):
super(LinkedInline, self).__init__(*args)
if self.admin_model_path is None:
self.admin_model_path = self.model.__name__.lower()
LinkedInline
次に、新しいインラインを定義するときに、通常の の代わりにmy を使用するだけですInlineModelAdmin
。
他の人にも役立つことを願っています。
ジョヴァンニ