我正在尝试为我的模型创建一个编辑表单。我没有使用模型表单,因为根据模型类型,用户可以使用不同的表单。 (例如,其中一个表单有 Tinymce 小部件,而另一个没有。)
有没有什么方法可以使用模型设置表单(不是 ModelForm
)的初始数据?
我尝试了以下但出现错误:
b = get_object_or_404(Business, user=request.user)
form = f(initial = b)
其中 f
是 forms.Form
的子类
我收到的错误是 AttributeError: 'Business' object has no attribute 'get'
最佳答案
初始数据需要是一个 dict
(或者至少有一个类似 dict
的接口(interface),这是 Django 模型所没有的)。
您可以使用 django.forms.models.model_to_dict
从您的模型构造一个 dict
:
from django.forms.models import model_to_dict
b_as_dict = model_to_dict(b)
这与 Django 内置的 ModelForm
类用于设置其初始数据的函数相同,虽然您已指定不想使用 ModelForm
找到某种允许您这样做的代码结构方式可能更方便。
https://stackoverflow.com/questions/10837691/