ModelFormSet用于编辑模型类的所有条目

时间:2011-06-01 20:35:17

标签: django django-forms

我有一个简单的模型类:

class Category(BaseModel):
    categoryText = db.StringProperty()
    parentCat = db.IntegerProperty()

我想创建一个模型表单集来显示所有类别的条目:

表单类:

class CategoryForm(forms.ModelForm):
    categoryText = forms.CharField()
    class Meta:
        model = Category  

View.py

def showAllCategories:
    CategoryFormSet = modelformset_factory(Category)

    if request.POST:
       formset = CategoryFormSet(request.POST)
       if formset.is_valid():
           formset.save()

    else:
       formset = CategoryFormSet(Category.objects.all())
     return render_to_response('showcat.html',{'formset':formset})

不确定我做错了什么:我收到此错误:     'StringProperty'对象没有'editable'属性

这应该很简单,但这是一个挑战。

2 个答案:

答案 0 :(得分:4)

我意识到这有点旧,但要修复“'ModelFormOptions'对象没有属性'many_to_many'”错误,您可能想尝试更改以下代码:

CategoryFormSet = modelformset_factory(CategoryForm)

CategoryFormSet = modelformset_factory(Category) 

请改用模型的名称。

答案 1 :(得分:2)

试试这个:

<强> view.py

def showAllCategories(request):
    CategoryFormSet = modelformset_factory(CategoryForm)
    if request.method=='POST':
        formset = CategoryFormset(request.POST)
        if formset.is_valid():
            ...
            formset.save()
            ...
    else:
        formset = CategoryFormset(queryset=Category.objects.all())