Я новичок в 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()
Я предполагаю, что мне нужно сохранить идентификатор для полей, чтобы обновить их!
Наконец мой вопрос:
1) Я делаю это правильно или есть более простой способ сделать это?
2) моя проблема заключается в передаче начальных значений в набор форм с начальными значениями, неизвестными до времени выполнения.
3) я должен забыть о наборах форм и сделать это, добавив поля в форму с помощью init ?
4) как правильно инициализировать поля формы в наборе форм?
AM