私はdjango-uniformを使用していて、いくつかの統一された機能を使用しています。私は、フォーム宣言から独立したCSSウィジェットを直接追加する方法を探しています。djangoフォーム宣言でラベルのCSSクラスを設定するには?
今の私の唯一の方法は私の一般的なフォームテンプレートでJavaScriptのビットを追加し、クラスを追加することです
from django import forms
def _get_cleaner(form, field):
def clean_field():
return getattr(form.instance, field, None)
return clean_field
class UniformROMixin(forms.BaseForm):
"""
UniformROMixin, inherits to turn some fields read only
- read_only = list of field names.
"""
def __init__(self, *args, **kwargs):
super(UniformROMixin, self).__init__(*args, **kwargs)
if hasattr(self, "read_only"):
if self.instance and self.instance.pk:
for field in self.read_only:
self.fields[field].widget.attrs['readonly'] = True
self.fields[field].widget.attrs['class'] += "readOnly"
# here I would like to set css class of the label
# created from the self.fields[field].label string
setattr(self, "clean_" + field, _get_cleaner(self, field))
(私の再利用可能な読み取り専用の自家製のmixinスニペット...ここで、ボーナスとして)マニュアル。
素晴らしいアイデアですか?
私は良い答えがある可能性があります。スニペットた
私は、フォームの宣言でCSSクラスを追加する方法を知りませんが、私が使用してきました:http://pypi.python.org/pypi/django-widget-tweaksを使うと、テンプレート・レベルのラベル・タグやフォーム要素などの属性に便利に属性を追加できます。 – Brandon
提案のためのThanx。私の場合、私はdjango-uniformによって完全に行われたテンプレート部分は扱いません。私はまだどのように作品がウィジェットの "レンダリング"メソッドを見て、それをオーバーライドすることができます... – christophe31