0

私は次のフォームを持っています:

class EmailPreferences(forms.ModelForm):
    """ Base form used for fields that are always required """
    def __init__(self, *args, **kw):
        super(EmailPreferences, self).__init__(*args, **kw)

    class Meta:
        model = teacher_email_preferences
        exclude = ['id', 'c_user']

    def save(self, force_insert=False, force_update=False, commit=True):
        obj = super(EmailPreferences, self).save(commit=commit)
        return obj

ご覧のとおり、モデル名は固定ですteacher_email_preferences。しかし、私のサイトには 2 種類のユーザーTeacherがいStudentます。別のフォームを作成したくありません。したがってstudent_email_preferences、このフォームを開始するときにモデルを変更したいと考えています。行うときにここでモデルを渡すにはどうすればよいform = EmailPreferences()ですか?

4

1 に答える 1

1

できません。ただし、代わりにクロージャーを使用できます。

def emailform(emailmodel):
    class EmailPreferences(forms.ModelForm):
         ...

        class Meta:
            model = emailmodel

         ...

    return EmailPreferences

 ...

form = emailform(teacher_email_preferences)()
于 2012-05-28T09:39:41.387 に答える