Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Django - resize textfield input model

Estas en el tema de Django - resize textfield input model en el foro de Python en Foros del Web. Hola como les va, estoy teniendo un problema al trabajar con campos de texto del tipo textfield en mi modelo, no logro poder personalizar el ...
  #1 (permalink)  
Antiguo 24/06/2013, 13:02
 
Fecha de Ingreso: enero-2013
Ubicación: Montevideo
Mensajes: 28
Antigüedad: 9 años
Puntos: 1
Django - resize textfield input model

Hola como les va, estoy teniendo un problema al trabajar con campos de texto del tipo textfield en mi modelo, no logro poder personalizar el tamaño de dicho campo.
Tengo la clase
Noticia con campos copete y contenido del tipo models.textField()

Código Python:
Ver original
  1. class Noticia(models.Model):
  2.     copete = models.TextField()
  3.     contenido = models.TextField()

intente crear una clase NoticiaForm() para darle formato al widget textarea pero no logro hacerlo.

Código Python:
Ver original
  1. class NoticiaForm(ModelForm):
  2.     class Meta:
  3.         model = Noticia
  4.         widgets = {
  5.             'contenido': TextField(attrs={'cols': 80, 'rows': 20}),
  6.             #'contenido': TextArea(attrs={'cols': 80, 'rows': 20}),
  7.         }

Eso lo puse en el models.py...
Alguien puede decirme que estoy haciendo mal?

Gracias
  #2 (permalink)  
Antiguo 24/06/2013, 13:20
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 16 años, 10 meses
Puntos: 1360
Respuesta: Django - resize textfield input model

Hay varias formas de hacer esto:

La primera y las sencilla es hacerlo por medio de css.

La segunda:
Código Python:
Ver original
  1. class NoticiaForm(ModelForm):
  2.     contenido = forms.CharField(widget=forms.Textarea(attrs={'cols': 80, 'rows': 20})
  3.  
  4.     class Meta:
  5.         model = Noticia

Y la tercera haciendo un override
Código Python:
Ver original
  1. class NoticiaForm(ModelForm):
  2.     def __init__(self, *args, **kwargs):
  3.         super(NoticiaForm,  self).__init__(*args, **kwargs)
  4.         contenido = self.fields['contenido'].widget.attrs
  5.         contenido['cols'] = 80
  6.         contenido['rows'] = 20
  7.  
  8.     class Meta:
  9.         model = Noticia
  #3 (permalink)  
Antiguo 24/06/2013, 14:08
 
Fecha de Ingreso: enero-2013
Ubicación: Montevideo
Mensajes: 28
Antigüedad: 9 años
Puntos: 1
Respuesta: Django - resize textfield input model

Gracias por responder !
Ahora mirando me di cuenta que el problema está en que estoy usando un editor integrado, de la siguiente forma.

En el admin.py tengo este codigo:

Código Python:
Ver original
  1. class NoticiaAdmin(admin.ModelAdmin):
  2.     list_display = ['titulo','fecha','destacar']
  3.     inlines = [NoticiaImageInline]
  4.     class Media:        
  5.         js = ('../static/editores/tiny_mce/tiny_mce.js','../static/editores/textarea.js')

Ya alguna vez tuve algun problema al tratar de obtener el texto de un textarea con este editor integrado, como que te crea un div arriba...
Si le saco el editor me funciona bien el resize del input, pero tengo que dejar el editor, alguna sugerencia ?

gracias
  #4 (permalink)  
Antiguo 24/06/2013, 15:07
 
Fecha de Ingreso: enero-2013
Ubicación: Montevideo
Mensajes: 28
Antigüedad: 9 años
Puntos: 1
Respuesta: Django - resize textfield input model

Pude solucionar ingresando en textarea.js las propiedades:
width
height


Código Javascript:
Ver original
  1. tinyMCE.init({
  2.         mode : "textareas",
  3.         theme : "advanced",
  4.         //content_css : "/appmedia/blog/style.css",
  5.         theme_advanced_toolbar_location : "top",
  6.         theme_advanced_toolbar_align : "left",
  7.         theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,bullist,numlist,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,separator,image,media,cleanup,separator,code,fullscreen,separator,preview",
  8.         theme_advanced_resizing : true,
  9.         //theme_advanced_buttons1 : "bold,italic,underline,separator,bullist,numlist,link,unlink,separator,fontsizeselect,separator,forecolor,backcolor",
  10.         theme_advanced_buttons2 : "",
  11.         theme_advanced_buttons3 : "",
  12.         auto_cleanup_word : true,
  13.         //plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu,fullscreen",
  14.         plugin_insertdate_dateFormat : "%m/%d/%Y",
  15.         plugin_insertdate_timeFormat : "%H:%M:%S",
  16.         extended_valid_elements : "a[name|href|target=_blank|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
  17.         fullscreen_settings : {
  18.                 theme_advanced_path_location : "top",
  19.                 theme_advanced_buttons1 : "fullscreen,separator,preview,separator,cut,copy,paste,separator,undo,redo,separator,search,replace,separator,code,separator,cleanup,separator,bold,italic,underline,strikethrough,separator,forecolor,backcolor,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,help",
  20.                 theme_advanced_buttons2 : "removeformat,styleselect,formatselect,fontselect,fontsizeselect,separator,bullist,numlist,outdent,indent,separator,link,unlink,anchor",
  21.                 theme_advanced_buttons3 : "sub,sup,separator,image,insertdate,inserttime,separator,tablecontrols,separator,hr,advhr,visualaid,separator,charmap,emotions,iespell,flash,separator,print",
  22.                 theme_advanced_resizing : true,
  23.         },
  24.         width: '700',
  25.         height: '400'
  26. });

al menos pude agrandar, lo que no hace es el resize automatico. por mas que haya puesto

Código Javascript:
Ver original
  1. theme_advanced_resizing : true,

Etiquetas: campo, django, input, model, resize, textfield
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:38.