The issue occurred for Integer, Float and Decimal fields surely, I haven't tested further, and only when using SQLite. PostgreSQL handles this fine. When creating a new field type, and a default value is not provided nor is the Null flag set to True, South raises an exception when it tries to create the db column. Here is the traceback:
Environment:
Request Method: POST
Request URL: http://localhost:8000/tables/43/fields/add/
Django Version: 1.4.2
Python Version: 2.6.8
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.formtools',
'south',
'polymodels',
'mutant',
'mutant.contrib.boolean',
'mutant.contrib.temporal',
'mutant.contrib.file',
'mutant.contrib.numeric',
'mutant.contrib.text',
'mutant.contrib.web',
'mutant.contrib.related',
'schemer',
'debug_toolbar')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Traceback:
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/user/dev/virenvs/dynamicmodels/dynamodels/schemer/views.py" in field_create_wizard_view
209. return wizard(request, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/views/generic/base.py" in view
48. return self.dispatch(request, *args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/contrib/formtools/wizard/views.py" in dispatch
223. response = super(WizardView, self).dispatch(request, *args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/views/generic/base.py" in dispatch
69. return handler(request, *args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/contrib/formtools/wizard/views.py" in post
286. return self.render_done(form, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/contrib/formtools/wizard/views.py" in render_done
328. done_response = self.done(final_form_list, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/dynamodels/schemer/views.py" in done
201. ContentTypeModel.objects.create(**field_options)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/db/models/manager.py" in create
137. return self.get_query_set().create(**kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/db/models/query.py" in create
377. obj.save(force_insert=True, using=self.db)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_mutant-0.0.2-py2.6.egg/mutant/models/field/__init__.py" in save
202. return super(FieldDefinition, self).save(*args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_polymodels-1.0.1-py2.6.egg/polymodels/models.py" in save
42. return super(BasePolymorphicModel, self).save(*args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_mutant-0.0.2-py2.6.egg/mutant/models/model/__init__.py" in save
251. save = super(ModelDefinitionAttribute, self).save(*args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/db/models/base.py" in save
463. self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/db/models/base.py" in save_base
565. created=(not record_exists), raw=raw, using=using)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django/dispatch/dispatcher.py" in send
172. response = receiver(signal=self, sender=sender, **named)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_mutant-0.0.2-py2.6.egg/mutant/management/__init__.py" in wrapper
53. **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_mutant-0.0.2-py2.6.egg/mutant/management/__init__.py" in field_definition_post_save
208. instance.name, field, keep_default=keep_default)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/django_mutant-0.0.2-py2.6.egg/mutant/management/__init__.py" in perform_ddl
34. getattr(db, action)(*args, **kwargs)
File "/home/user/dev/virenvs/dynamicmodels/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/db/sqlite3.py" in add_column
25. raise ValueError("You cannot add a null=False column without a default value.")
Exception Type: ValueError at /tables/43/fields/add/
Exception Value: You cannot add a null=False column without a default value.