代替アプローチ、読み取り専用フィールドを表すためのウィジェットを作成することです。ここに私が自分のために書いたものがあります。独自の要件に合わせて<span %s>%s</span>
を変更することができます。追加したことをしたら
from django import forms
from django.utils.safestring import mark_safe
from django.utils.encoding import force_unicode
class ReadOnlyWidget(forms.TextInput):
def render(self, name, value, attrs=None):
if value is None:
value = ''
final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
if value != '':
# Only add the 'value' attribute if a value is non-empty.
final_attrs['value'] = force_unicode(self._format_value(value))
return mark_safe(u'<span%s />%s</span>' % (flatatt(final_attrs),value))
、単純に次の操作を行います。
class MyAdmin(admin.ModelAdmin):
foo = models.TextField(widget=ReadOnlyWidget(attrs={'class':'read-only'}
initial="$50")
は、その後、あなたのCSSで、
read-only
クラスのいくつかのスタイリングを行う、またはそれに応じて属性を調整することができます。
私が始めたときに似たようなことを試したと思っていましたが、おそらく何かを打ち砕いて、もっと複雑な解決策を探していました。 とにかく、私が必要としていたもの。ありがとうございました。 – Krachtwerk