1

フォーム.py

PERSON_ACTIONS = (
    ('1', '01.Allowed to rest and returned to class'),
    ('2', '02.Contacted parents /guardians'),
    ('3', '02a.- Unable to Contact'),
    ('4', '02b.Unavailable - left message'),)

class PersonActionsForm(forms.ModelForm):
   action = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=PERSON_ACTIONS, required=False, label= u"Actions")

models.py

class Actions(models.Model):
    report = models.ForeignKey(Report)
    action =  models.IntegerField('Action type')

print.html

{{ actionform.as_p}}

PersonActionsForm には、複数選択チェックボックスのある項目が含まれています。レポート登録ページでは、ユーザーは任意の項目を選択できます。チェックされた項目は整数値としてモデルに保存されます。

私はフォーム全体をレンダリングしているので、チェックされたアイテムとチェックされていないアイテムでフォーム全体を表示しています。

印刷ページで、チェックを入れた項目だけをチェックボックスなしで表示したい。

ジャンゴでこれを行う方法。

ありがとう

4

2 に答える 2

1

編集表示以外の目的でフォームを使用するべきではありません。代わりに、クラスでメソッドを作成します。

from forms import PERSON_ACTIONS
PERSON_ACTIONS_DICT = dict(PERSON_ACTIONS)

class Actions(models.Model):
    report = models.ForeignKey(Report)
    action =  models.IntegerField('Action type')

    def action_as_text(self):
        return PERSON_ACTIONS_DICT.get(str(self.action), None)

次に{{ obj.action_as_text }}、テンプレートで行うだけで、必要なテキストを取得できます。配列で整数を使用する方がおそらくより一般的であることに注意してください(その場合、 での呼び出しPERSON_ACTIONSは必要ありません。)straction_as_text

于 2013-07-19T15:54:06.780 に答える