Djangoの機能
Djangoのモデルフィールドの「空白」属性、およびモデルフォームを作成するときに否定されてフォームフィールドの「必須」属性に変換される方法は、かなりクールです。これにより、プロパティが属するモデルにプロパティを設定できますが、そこから作成されたModelFormを処理するときに「required」属性を使用できます。テンプレートでレンダリングするときに「必須」を使用できるということは、必須フィールドの表示ラベルにアスタリスクを追加するなどのクールなことができることを意味します。
モデル
class Employee(models.Model):
name = models.CharField(blank=False)
public_bio = models.TextField(blank=False)
salary= models.DecimalField(max_digits=15, decimal_places=2, blank=False)
personnel_notes = models.TextField(blank=True)
テンプレート(ModelFormを使用)
{% for field in form %}
<p>
{{ field.label }}{% if field.required %}*{% endif %}
{{ field }}
</p>
{% endfor %}
やりたいこと
しかし、自分の新しい属性でそれを実行したい場合はどうなりますか?空白->必須のように否定/変換する必要はありませんが、モデルフィールドで定義された新しい属性にフォームフィールドでアクセスできるようにする必要があります。たとえば、公開される可能性のあるフィールドをユーザーに明示したいとします。
モデル
class Employee(models.Model):
name = models.CharField(blank=False, publishable=True)
public_bio = models.TextField(blank=False, publishable=True)
salary= models.DecimalField(max_digits=15, decimal_places=2, blank=False, publishable=False)
personnel_notes = models.TextField(blank=True, publishable=False)
テンプレート(ModelFormを使用)
{% for field in form %}
<p>
{{ field.label }}{% if field.required %}*{% endif %}
{% if field.publishable %}(may be published){% endif %}
{{ field }}
</p>
{% endfor %}
これを行う方法はありますか?それを試してみると、モデル定義ですぐに問題が発生django.db.models.fields.Field.__init__()
し、kwargsさえ受け入れられません。これが不可能な場合、目的の動作を実現するための回避策のアイデアはありますか?