我想创建一个能够显示各种不同模型的ModelForm的视图.它通过获取模型的内容类型然后动态实例化与该特定模型相关联的模型表单来实现.这是我的模型:
from django.db import models
class SomeModel(models.Model):
name = models.CharField(max_length=150)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
在同一个应用程序中,有一个forms.py,其格式如下:
from django.forms import ModelForm
from someapp.models import SomeModel
class SomeModelForm(ModelForm):
class Meta:
model = SomeModel
fields = ('name',)
Run Code Online (Sandbox Code Playgroud)
所以我想在我的视图文件中做的是动态地为每个模型返回正确的表单.我尝试了以下方法:
from django.db import models
from someapp.forms import SomeModelForm
class SomeModel(models.Model):
name = models.CharField(max_length=150)
form = SomeModelForm
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
但由于明显的循环导入,它不起作用.有谁知道如何实现这个目标?我尝试使用modelform_factory,但似乎忽略了forms.py中的任何自定义模型形式.
编辑:我应该提到我不会有模型的实例,只有模型类本身,所以有一个模型内部的方法不起作用(但是,如果你调用它,它确实有效)模型的一个实例)
您可以通过在方法中导入模型表单来绕过循环导入.
class SomeModel(models.Model):
name = models.CharField(max_length=150)
@staticmethod
def get_form_class():
from someapp.forms import SomeModelForm
return SomeModelForm
# in your view:
SomeModel.get_form_class()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |