我必须与modelForms相同,我想只做一个将军而不是他们。 请参阅下面的代码示例
class CreateStudent(forms.ModelForm):
class Meta:
model = Student
fields = [field.name for field in model._meta.fields if not field.name == 'id']
class CreateGroup(forms.ModelForm):
class Meta:
model = Group
fields = [field.name for field in model._meta.fields if not field.name == 'id']
我希望能够做到这样的事情:
class CreateItem(forms.ModelForm):
class Meta:
model = custom_model_name #here I need to pass model from request somehow
fields = [field.name for field in model._meta.fields if not field.name == 'id']
我希望有/create/Group
和/create/User
等链接
并且我想传递url的最后一部分(Group
或User
)以形成构造函数并基于它生成表单。
答案 0 :(得分:2)
你不能这样做。元属性在定义时进行评估,因此您无法根据运行时的请求更改它。
但是,由于您只有有限数量的模型,并且您没有自定义表单,为什么不定义表单然后使用字典来使用正确的表单?
def create(request, model_class):
forms = {
'user': UserForm,
'group': GroupForm
}
form_class = forms[model_class]
...