sortable_by positional on_delete missing init__ argument __init__ python django postgresql django-models django-south

python - init__ - django missing 1 required positional argument on_delete



Error de Django South: AttributeError: el objeto ''DateTimeField'' no tiene atributo ''model''` (1)

Así que estoy tratando de migrar una tabla agregándole dos columnas. Una fecha de startDate y una fecha de endDate . Usando el south para Django, esto debería ser una simple migración. También tengo un montón de otras tablas con dateTimes en ellas, pero por alguna razón estoy obteniendo un problema aquí y no lo veo.

La traza de la pila está indicando:

AttributeError: ''DateTimeField'' object has no attribute ''model''

Aquí está el modelo que estoy migrando:

# Keep track of who has applied for a Job class JobApply(models.Model): job = models.ForeignKey(Jobs) user = models.ForeignKey(User) # Keep track of the Developer accepted to do the work accepted_dev = models.IntegerField(null=False, blank=False, default=0) # If 1 (True) the User has applied to this job isApplied = models.BooleanField(default=0) startDate = models.DateTimeField() endDate = models.DateTimeField()

Todos los campos excepto startDate y endDate ya existen en la base de datos. Entonces, para dar a esas columnas los valores predeterminados, uso datetime.date.now () a través del terminal para mantener todo en orden. El problema es que la schemamigration de schemamigration funciona muy bien, pero la migración real barfs.

Si alguien puede ver el error, mi cabello lo apreciaría. :PAG

EDITAR : incluyendo Stacktrace:

Running migrations for insource: - Migrating forwards to 0004_auto__add_field_jobapply_startDate__add_field_jobapply_endDate. > insource:0004_auto__add_field_jobapply_startDate__add_field_jobapply_endDate Error in migration: insource:0004_auto__add_field_jobapply_startDate__add_field_jobapply_endDate Traceback (most recent call last): File "./manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/south/management/commands/migrate.py", line 111, in handle ignore_ghosts = ignore_ghosts, File "/usr/local/lib/python2.7/dist-packages/south/migration/__init__.py", line 220, in migrate_app success = migrator.migrate_many(target, workplan, database) File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 229, in migrate_many result = migrator.__class__.migrate_many(migrator, target, migrations, database) File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 304, in migrate_many result = self.migrate(migration, database) File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 129, in migrate result = self.run(migration, database) File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 113, in run return self.run_migration(migration, database) File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 83, in run_migration migration_function() File "/usr/local/lib/python2.7/dist-packages/south/migration/migrators.py", line 59, in <lambda> return (lambda: direction(orm)) File "/home/jared/Desktop/School/insource/insource/migrations/0004_auto__add_field_jobapply_startDate__add_field_jobapply_endDate.py", line 14, in forwards keep_default=False) File "/usr/local/lib/python2.7/dist-packages/south/db/generic.py", line 47, in _cache_clear return func(self, table, *args, **opts) File "/usr/local/lib/python2.7/dist-packages/south/db/generic.py", line 411, in add_column sql = self.column_sql(table_name, name, field) File "/usr/local/lib/python2.7/dist-packages/south/db/generic.py", line 706, in column_sql default = field.get_db_prep_save(default, connection=self._get_connection()) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 350, in get_db_prep_save prepared=False) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 911, in get_db_prep_value value = self.get_prep_value(value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 902, in get_prep_value (self.model.__name__, self.name, value), AttributeError: ''DateTimeField'' object has no attribute ''model''

Código de migración (agregando código relevante ya que es un poco largo):

def forwards(self, orm): # Adding field ''JobApply.startDate'' db.add_column(u''insource_jobapply'', ''startDate'', self.gf(''django.db.models.fields.DateTimeField'')(default=datetime.datetime(2013, 12, 7, 0, 0)), keep_default=False) # Adding field ''JobApply.endDate'' db.add_column(u''insource_jobapply'', ''endDate'', self.gf(''django.db.models.fields.DateTimeField'')(default=datetime.datetime(2013, 12, 7, 0, 0)), keep_default=False) def backwards(self, orm): # Deleting field ''JobApply.startDate'' db.delete_column(u''insource_jobapply'', ''startDate'') # Deleting field ''JobApply.endDate'' db.delete_column(u''insource_jobapply'', ''endDate'') u''insource.jobapply'': { ''Meta'': {''object_name'': ''JobApply''}, ''accepted_dev'': (''django.db.models.fields.IntegerField'', [], {''default'': ''0''}), ''endDate'': (''django.db.models.fields.DateTimeField'', [], {}), u''id'': (''django.db.models.fields.AutoField'', [], {''primary_key'': ''True''}), ''isApplied'': (''django.db.models.fields.BooleanField'', [], {''default'': ''False''}), ''job'': (''django.db.models.fields.related.ForeignKey'', [], {''to'': u"orm[''insource.Jobs'']"}), ''startDate'': (''django.db.models.fields.DateTimeField'', [], {}), ''user'': (''django.db.models.fields.related.ForeignKey'', [], {''to'': u"orm[''auth.User'']"}) },


Tuve que actualizar mi versión de south para django a la versión 0.8.4 .

Tenía que ejecutar el siguiente comando:

sudo easy_install -U South

O, si usas pip :

pip install South --upgrade

Después de eso, mi migración funcionó como se esperaba.