[pyar] [Django] problema al modificar y agregar un campo fecha un Model

Ricardo Daniel Quiroga l2radamanthys en gmail.com
Lun Ago 29 09:33:30 ART 2016


Si hice un lio copie el trace del error pero no el codigo al menos del
modelo que lo generaba, pero en si fue borrar las migraciones antes del
cambio
aprendi que no se puede cambiar de nombre un campo cuando una migracion
falla :D

El 28 de agosto de 2016, 13:00, Francisco J Capdevila <fjcapdevila en gmail.com
> escribió:

> En ese caso deberías eliminar solo la ultima migración. que agregaste,
> con eso debería alcanzar.
> Es más, dale un vistazo a las migraciones. El código es bastante
> simple y te va a dar una idea de como es que funciona el sistema de
> migraciones.
> Francisco J. Capdevila
>
>
> 2016-08-28 12:58 GMT-03:00 Ricardo Daniel Quiroga <l2radamanthys en gmail.com
> >:
> > si ahi quedo el problema porque renombre el campo y sigue tratando
> enviar el
> > cambio, vere de eliminar la carpeta migration y forzar de nuevo
> >
> >
> >
> > 2016-08-28 12:55 GMT-03:00 Ricardo Daniel Quiroga <
> l2radamanthys en gmail.com>:
> >>
> >> disculpa copie un traceback anterior, en realidad renombre el campo
> >> expire_date a vencimiento por no tener un desastre en spanglish
> >>
> >>
> >> 2016-08-28 12:50 GMT-03:00 Francisco J Capdevila <fjcapdevila en gmail.com
> >:
> >>>
> >>> Me parece que Fernando te cantó la justa.
> >>>
> >>> Otro posible problema sería que tu nuevo campo se llame "expire_date"
> >>> en lugar de "vencimiento" y que tu modelo se llame "Catamaran" en
> >>> lugar de "Negocio". En ese caso, estás intentando agregar un nuevo
> >>> campo que no puede ser Null (por defecto Django define los fields como
> >>> null=False), pero ya existen registros en dicha tabla, entonces se
> >>> queja por que no puede pner en Null el nuevo campo para los registros
> >>> ya existentes en la tabla y tampoco sabe que valor poner por defecto.
> >>> Deberías ver si podes definir ese campo como null=True o bien
> >>> explicarle a Django como calcular un "expire_date" para los registros
> >>> que ya existen para el modelo "Catamaran"
> >>>
> >>> Saludos y suerte con eso!
> >>> Francisco J. Capdevila
> >>>
> >>>
> >>> 2016-08-28 12:34 GMT-03:00 Fernando Riquelme
> >>> <fernandoriquelme55 en gmail.com>:
> >>> > El problema podría estar en el campo expire_date, de alguna de tus
> >>> > tablas
> >>> > (creo que Main_catamaran puede tener ese campo)
> >>> >
> >>> > 2016-08-28 2:47 GMT-03:00 Ricardo Daniel Quiroga
> >>> > <l2radamanthys en gmail.com>:
> >>> >>
> >>> >> Hola
> >>> >> actualmente estoy modificando un Modelo en django especificamente
> >>> >>
> >>> >> class Negocio(models.Model):
> >>> >>     nombre = models.CharField(max_length=100)
> >>> >>     telefono = models.CharField(max_length=20, blank=True,
> default='')
> >>> >>     telefono_alt = models.CharField(max_length=20, blank=True,
> >>> >> default='')
> >>> >>     facebook = models.CharField(max_length=100,
> >>> >> default='https://facebook.com')
> >>> >>     email = models.CharField(max_length=100, blank=True,
> default='')
> >>> >>     lat = models.FloatField(default=0.0)
> >>> >>     lng = models.FloatField(default=0.0)
> >>> >>     inproved = models.BooleanField(default=False)
> >>> >>     vencimiento = models.DateField(auto_now=True)
> >>> >>     active = models.BooleanField(default=True, editable=False)
> >>> >>
> >>> >> agregue el campo vencimiento
> >>> >>      vencimiento = models.DateField(auto_now=True)
> >>> >>
> >>> >> pero cuando corro python manage.py migrate (despues de haber corrido
> >>> >> makemigrations) me devuelve el siguiente error,
> >>> >>
> >>> >>
> >>> >>
> >>> >> (env3c) D:\Workspace\Python\SPOServer\SPOServer>python manage.py
> >>> >> makemigrations
> >>> >> Migrations for 'Main':
> >>> >>   Main\migrations\0010_auto_20160828_0238.py:
> >>> >>     - Alter field expire_date on catamaran
> >>> >>
> >>> >> (env3c) D:\Workspace\Python\SPOServer\SPOServer>python manage.py
> >>> >> migrate
> >>> >> Operations to perform:
> >>> >>   Apply all migrations: Main, admin, auth, contenttypes, sessions
> >>> >> Running migrations:
> >>> >>   Rendering model states... DONE
> >>> >>   Applying Main.0005_auto_20160828_0233...Traceback (most recent
> call
> >>> >> last):
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\utils
> >>> >> .py", line 64, in execute
> >>> >>     return self.cursor.execute(sql, params)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\sqlit
> >>> >> e3\base.py", line 337, in execute
> >>> >>     return Database.Cursor.execute(self, query, params)
> >>> >> sqlite3.IntegrityError: NOT NULL constraint failed:
> >>> >> Main_catamaran.expire_date
> >>> >>
> >>> >> The above exception was the direct cause of the following exception:
> >>> >>
> >>> >> Traceback (most recent call last):
> >>> >>   File "manage.py", line 22, in <module>
> >>> >>     execute_from_command_line(sys.argv)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\core\management\_
> >>> >> _init__.py", line 367, in execute_from_command_line
> >>> >>     utility.execute()
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\core\management\_
> >>> >> _init__.py", line 359, in execute
> >>> >>     self.fetch_command(subcommand).run_from_argv(self.argv)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\core\management\b
> >>> >> ase.py", line 305, in run_from_argv
> >>> >>     self.execute(*args, **cmd_options)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\core\management\b
> >>> >> ase.py", line 356, in execute
> >>> >>     output = self.handle(*args, **options)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\core\management\c
> >>> >> ommands\migrate.py", line 202, in handle
> >>> >>     targets, plan, fake=fake, fake_initial=fake_initial
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\migrations\exe
> >>> >> cutor.py", line 97, in migrate
> >>> >>     state = self._migrate_all_forwards(plan, full_plan, fake=fake,
> >>> >> fake_initial=
> >>> >> fake_initial)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\migrations\exe
> >>> >> cutor.py", line 132, in _migrate_all_forwards
> >>> >>     state = self.apply_migration(state, migration, fake=fake,
> >>> >> fake_initial=fake_
> >>> >> initial)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\migrations\exe
> >>> >> cutor.py", line 237, in apply_migration
> >>> >>     state = migration.apply(state, schema_editor)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\migrations\mig
> >>> >> ration.py", line 129, in apply
> >>> >>     operation.database_forwards(self.app_label, schema_editor,
> >>> >> old_state,
> >>> >> projec
> >>> >> t_state)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\migrations\ope
> >>> >> rations\fields.py", line 84, in database_forwards
> >>> >>     field,
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\sqlit
> >>> >> e3\schema.py", line 231, in add_field
> >>> >>     self._remake_table(model, create_fields=[field])
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\sqlit
> >>> >> e3\schema.py", line 199, in _remake_table
> >>> >>     self.quote_name(model._meta.db_table),
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\base\
> >>> >> schema.py", line 112, in execute
> >>> >>     cursor.execute(sql, params)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\utils
> >>> >> .py", line 79, in execute
> >>> >>     return super(CursorDebugWrapper, self).execute(sql, params)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\utils
> >>> >> .py", line 64, in execute
> >>> >>     return self.cursor.execute(sql, params)
> >>> >>   File
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\utils.py",
> >>> >> lin
> >>> >> e 94, in __exit__
> >>> >>     six.reraise(dj_exc_type, dj_exc_value, traceback)
> >>> >>   File
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\utils\six.py",
> >>> >> li
> >>> >> ne 685, in reraise
> >>> >>     raise value.with_traceback(tb)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\utils
> >>> >> .py", line 64, in execute
> >>> >>     return self.cursor.execute(sql, params)
> >>> >>   File
> >>> >>
> >>> >> "D:\Workspace\virtualenv\env3c\lib\site-packages\
> django\db\backends\sqlit
> >>> >> e3\base.py", line 337, in execute
> >>> >>     return Database.Cursor.execute(self, query, params)
> >>> >> django.db.utils.IntegrityError: NOT NULL constraint failed:
> >>> >> Main_catamaran.expir
> >>> >> e_date
> >>> >>
> >>> >> (env3c) D:\Workspace\Python\SPOServer\SPOServer>
> >>> >>
> >>> >> alguna manera de agregar esto por django o tendre que hacerlo a mano
> >>> >> en
> >>> >> SQLite
> >>> >> Estoy usando Django 1.10 y Python 3.5.2 32bit sobre Windows por si
> >>> >> sirve
> >>> >> de algo
> >>> >>
> >>> >> gracias
> >>> >>
> >>> >>
> >>> >>
> >>> >> --
> >>> >>
> >>> >> Ricardo Daniel Quiroga
> >>> >>
> >>> >>
> >>> >> _______________________________________________
> >>> >> pyar mailing list pyar en python.org.ar
> >>> >> http://listas.python.org.ar/listinfo/pyar
> >>> >>
> >>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >>
> >>> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> >> Argentina - http://www.usla.org.ar
> >>> >
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > pyar mailing list pyar en python.org.ar
> >>> > http://listas.python.org.ar/listinfo/pyar
> >>> >
> >>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>> >
> >>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >>> > Argentina - http://www.usla.org.ar
> >>> _______________________________________________
> >>> pyar mailing list pyar en python.org.ar
> >>> http://listas.python.org.ar/listinfo/pyar
> >>>
> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>>
> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >>> Argentina - http://www.usla.org.ar
> >>
> >>
> >>
> >>
> >> --
> >>
> >> Ricardo Daniel Quiroga
> >>
> >
> >
> >
> > --
> >
> > Ricardo Daniel Quiroga
> >
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 

Ricardo Daniel Quiroga
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160829/3416e15b/attachment-0001.html>


Más información sobre la lista de distribución pyar