¿Cómo puedo agregar campos de área de texto adicionales a un formulario?

Necesito generar varias áreas de texto para que los usuarios las llenen y las vuelvan a enviar al modelo. Sin embargo, creo que necesitan que todos tengan nombres diferentes (¿estoy en lo correcto?)

¿Cómo puedo generar nombres aleatorios para cada área de texto y cómo puede el modelo obtener los datos dentro de uno recibe la solicitud POST?

¡Gracias!

EDITAR: esperaba usar el nombre generado aleatoriamente como una forma de identificar el contenido y guardarlo en la base de datos

preguntado el 12 de junio de 12 a las 17:06

¿Por qué tienen que ser aleatorios? ¿Por qué no, por ejemplo, secuencial? -

es aleatorio porque varios usuarios podrían crear estas áreas de texto y, por lo tanto, la secuencia podría causar problemas al guardar:

1 Respuestas

Es difícil darle una buena respuesta aquí porque no ha indicado lo que realmente está tratando de lograr. Puede agregar 1000 campos de texto a su formulario, pero si no se correlacionan de alguna manera con los datos de su modelo, no tiene mucho sentido y ha descuidado esa información crucial.

Aún así, en un nivel muy básico, puede agregar áreas de texto adicionales a su formulario de la siguiente manera:

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)

        for i in range(1, 11):
            self.fields['mytextarea%d' % i] = forms.CharField(label='Textarea %d' % i, widget=forms.Textarea)

ACTUALIZACIÓN

Según su comentario y el hecho de que tiene la intención de almacenar y recuperar los campos de área de texto en un momento posterior, debe crear un modelo separado para ellos y vincularlo a su modelo principal a través de una relación de uno a muchos. Por ejemplo:

class PrimaryModel(models.Model):
    ... # Stuff here

class TextareaModel(models.Model):
    myprimarymodel = models.ForeignKey(PrimaryModel)
    mytextarea = models.TextField()

Es difícil dar un buen ejemplo ya que no ha indicado nada sobre el aspecto de sus modelos, pero la idea básica es que tiene un modelo que no contiene nada más que una clave externa al modelo principal y un campo de área de texto. A continuación, puede tratar estas áreas de texto como en línea a través de un conjunto de formulario modelo.

Respondido el 12 de junio de 12 a las 22:06

estas áreas de texto son una forma de agregar cosas a la base de datos. Un usuario podría generar potencialmente 1000 áreas de texto, llenarlas con algo y luego enviarlas para que se guarden. Más tarde podría recuperar estos 1000 textarea - Creador de Windows

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.