擅长:python、mysql、java
<p>你是说在运行时?是的,你可以。下面是一个简单的方法:</p>
<pre><code>def get_question_form(conditional_model):
class MCQuestionForm(forms.ModelForm):
class Meta:
model = conditional_model
...
return MCQuestionForm
</code></pre>
<p>然后在您的视图中,您可以重写<code>get_form_class</code>方法,并使用该函数返回带有您想要的任何模型的类。在</p>
<p>如果您使用的是基于函数的视图,它可能看起来像这样:</p>
^{pr2}$
<p>如果使用的是基于类的视图,则可能如下所示:</p>
<pre><code>from django.views.generic import FormView
class MyView(FormView):
...
def get_form_class(self):
model = MultipleChoiceQuestion
if some_condition:
model = EssayQuestion
return get_question_form(model)
...
</code></pre>