Soy nuevo en python y Django y tengo una pregunta simple sobre cómo actualizar el formulario f que tiene múltiples campos del mismo tipo: he estado tratando de hacer esto con formsets :formulario de actualización - using formsets - valores iniciales desconocidos hasta el tiempo de ejecución
que tienen un modelo simple para almacenar categorías:
class Category(BaseModel):
categoryText = db.StringProperty()
parentCat = db.IntegerProperty()
Quiero crear una forma que muestre todas las categorías disponibles en los campos de entrada para que todos pudieran ser editados:
utilizando juegos de formularios de mostrar varias filas del mismo tipo:
EDIT:
descubierto:
tuve que crear una lista de elementos del diccionario
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})
Estoy teniendo un problema en esta poblar los datos iniciales. Cuando genero en un bucle que me da errores:
class CategoryForm(forms.Form):
categoryText = forms.CharField()
parentCat = forms.CharField()
catID = forms.CharField()
Estoy asumiendo que necesito para almacenar el ID de los campos de actualizarlos!
Finalmente mi pregunta:
1) ¿Lo estoy haciendo bien o no es una forma más fácil de lograr esto?
2) mi problema ha sido pasar los valores iniciales a un formset con valores iniciales desconocidos hasta el tiempo de ejecución.
3) ¿Debería olvidarme de los conjuntos de formularios y hacer esto agregando campos al formulario con init?
4) ¿Cuál es la forma correcta de inicializar campos de formulario en un formset?
AM
¿Hay alguna razón no estás usando un modelo de formulario aquí ?? –
¿Por qué mezclar bases de datos sql y nosql? Como sé, StringProperty es para la base de datos * nosql *, pero * CharField * es para sql one. ¿Estas seguro que esto es correcto? – sergzach
es formas.CharField, no modelos.CharField, S. –