你的意思是在运行?是的你可以。这里有一个简单的方法来做到这一点:
def get_question_form(conditional_model):
class MCQuestionForm(forms.ModelForm):
class Meta:
model = conditional_model
...
return MCQuestionForm
然后在您的视图中,可以覆盖get_form_class
方法,并使用该函数返回你想要它的任何模型类。
如果您使用基于函数的观点,它可能看起来是这样的:如果你正在使用基于类的意见
def my_view(request):
model = MultipleChoiceQuestion
if some_condition:
model = EssayQuestion
form = get_question_form(model)
# now do stuff with form...
,它可能是这个样子:
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)
...
谢谢denvaar!对不起,我刚刚开始搞乱django。您能否请您详细解答您的答案 – SaidAkh
@SaidAkh当然,但我认为我需要了解您为了提供有意义的东西而想要做的更好一点。 – denvaar
根据视图逻辑,我将在运行时向'ModelForm'提供不同的模型。 – SaidAkh