[英]How to initialize Meta class 'model' variable in Django?
这可能是 Django 或一般的 Python 问题。 我有一个 ModelForm。 根据用户输入,我需要使用一种模型或另一种模型。 例如,如果输入是'M',我需要将他的表单与MaleTable 关联起来,否则与FemaleTable 关联。 我可以创建 2 个 ModelForms
class DemographicM (ModelForm):
class Meta:
model = MaleTable
class DemographicF (ModelForm):
class Meta:
model = FemaleTable
但是,我只想使用一个 ModelForm 并根据输入使用正确的模型对其进行初始化。
我知道 Meta 只是一个内部类。 如何在创建表单时初始化“模型”变量?
我建议保留它们并像这样使用它们
if choice == 'M':
TableForm = DemographicM
else:
TableForm = DemographicF
form = TableForm()
对于元类,它的实例是一个类本身。 因此,解决方案是使用函数随时随地创建类。 类似以下内容将起作用:
MODEL = None
def define_meta_attributes(model):
global MODEL
MODEL = model
def make_form_class(*args, **kwargs):
class Demographic (ModelForm):
class Meta:
model = MODEL
return Demographic(*args, **kwargs)
现在,您所要做的就是首先使用所需的模型调用define_meta_attributes,然后像这样调用make_form_class:
define_meta_attributes(MaleTable)
MaleTableForm = make_form_class()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.