2

我正在尝试为我的模型创建一个编辑表单。我没有使用模型表单,因为根据模型类型,用户可以使用不同的表单。(例如,其中一个表单有一个 Tinymce 小部件,而另一个没有。)

有没有办法使用模型设置表单(不是 a ModelForm)的初始数据?

我尝试了以下但收到错误:

b = get_object_or_404(Business, user=request.user)
form = f(initial = b)

f的子类在哪里forms.Form

我得到的错误是AttributeError: 'Business' object has no attribute 'get'

4

2 回答 2

6

初始数据需要是一个dict(或至少有一个类似dict的接口,Django 模型没有)。

dict您可以使用以下方法从您的模型中构造一个django.forms.models.model_to_dict

from django.forms.models import model_to_dict
b_as_dict = model_to_dict(b)

这与 Django 的内置ModelForm类用于设置其初始数据的函数相同,虽然您已指定不想使用 a ModelForm,但找到某种允许您这样做的代码结构方式可能会更方便.

于 2012-05-31T16:57:57.587 回答
6

有一种比 dict 更直接的使用模型数据的方法。请参阅文档中的示例。

b = get_object_or_404(Business, user=request.user)
form = f(instance = b)
于 2015-04-22T02:50:53.267 回答