更新表单-使用表单集-直到运行时才知道初始值

问题描述

| 我是python和Django的新手,并且对如何更新具有多个相同类型字段的f表单有一个简单的问题:我一直在尝试使用表单集来做到这一点: 我有一个简单的模型来存储类别:
class Category(BaseModel):
   categoryText = db.StringProperty()
   parentCat = db.IntegerProperty()
我想创建一个表单,在输入字段中显示所有可用类别,以便可以对其进行编辑: 使用表单集显示相同类型的多行: 编辑: 弄清楚了: 我必须创建一个词典项目列表
categories = Category.objects.all()
initialStuff = []
oneFormV={}
for cat in categories:
    oneFormV.clear()
    oneFormV[\"categoryText\"]=cat.categoryText
    oneFormV[\"parentCat\"]=str(cat.parentCat)
    oneFormV[\"catID\"]=str(cat.key().id())
    initialStuff.append(oneFormV.copy()) 


def showCategories(request):
    if request.POST:
       # code to update db
    else:
       categories = Category.objects.all()
       initialStuff = []
       for cat in categories:
         initialStuff += \"\'categoryText\':u\'\" + cat.categoryText +\"\',\" + \"\'parentCat\':u\'\" + str(cat.parentCat) +\"\',\" + \"\'catID\':u\'\" + str(cat.key().id()) + \"\'\"

       initialStuff =  initialStuff [:-1] # remove last comma
       CategoryFormSet = formset_factory(CategoryForm,extra=categories.count()) 
       formset = CategoryFormSet(initial= initialStuff )

       return render_to_response(\'adminCategories.html\',{\'formset\': formset})
我在填充初始数据时遇到问题。当我生成一个循环时,会给我错误:
class CategoryForm(forms.Form):
    categoryText = forms.CharField()
    parentCat = forms.CharField()
    catID = forms.CharField()
我假设我需要存储字段的ID来更新它们! 最后我的问题: 1)我是在正确执行此操作,还是有更简单的方法来完成此操作? 2)我的问题一直是将初始值传递给具有未知值的表单集,直到运行时。 3)我应该忘记表单集,而是通过使用init向表单添加字段来做到这一点吗? 4)在表单集中初始化表单字段的正确方法是什么? 上午     

解决方法

        initialStuff必须是字典列表,而不是字符串列表:
for cat in categories:    
  initialStuff.append( { categoryText: cat.categoryText,...
     }
  )
因此,请勿删除最后一个逗号。 如果对列表和str使用+ =操作,则会得到一个字符串列表(每个str的长度为1)。 请查看下一个:http://docs.djangoproject.com/en/dev/topics/forms/formsets/#using-initial-data-with-a-formset     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...