python - 将参数传递给 Django Modelform 的 Meta 类
问题描述
我的模型有这样的共同领域:
class Model_1(models.Model):
field_1
field_2
field_3
# Other fields
class Model_2(models.Model):
field_1
field_2
field_3
# Other fields
然后我想为他们两个创建一个表单,如下所示:
class CommonForm(forms.ModelForm):
class Meta:
variable_of_name_of_model = that pass to Meta class
# this condition check for
if variable_of_name_of_model == 'Model_1':
model = Model_1
elif variable_of_name_of_model == 'Model_2':
model = Model_2
fields = ['field_1', 'field_2', 'field_3']
在这种形式中,我检查variable_of_name_of_model
已传递给Meta
班级的内容,然后做一些事情。
我怎样才能做到这一点?另一方面,如何将参数传递给Meta
类?
解决方案
您可以使用一种 fabrik 方法:
def get_form_class(model_name,data, instance):
class CommonForm(forms.ModelForm):
class Meta:
model = model_name
fields = ['field_1', 'field_2', 'field_3']
form = CommonForm(data=data, instance=instance)
return form
只需在您想使用它的地方(视图?)使用模型名称来调用它。像这样的东西:
form = get_form_class(model_name=ModelName, data=request.POST, instance=instance,)
推荐阅读
- reactjs - 将 SVG div 加载到 React 组件
- reactjs - 如何将reducer的返回值设置为react js组件中的状态对象
- amazon-web-services - 当 2 个 lambda 具有相同的运动流时,会有什么行为?
- python - 使用 Paramiko 从远程服务器执行命令到另一个远程服务器
- python - 错误:PyAudio-0.2.11-cp38-cp38-win_amd64.whl 不是此平台支持的轮子
- html - 在 CSS 中移动侧边栏
- python - RGB 到 YIQ 并返回 python
- javascript - 如何在函数中创建模态页面?
- snappy - Laravel Snappy:多余的页面
- gdb - GDB“查找”命令提前终止