Author: mtredinnick
Date: 2006-06-08 10:14:06 -0500 (Thu, 08 Jun 2006)
New Revision: 3115

Modified:
   django/trunk/django/db/backends/ado_mssql/base.py
   django/trunk/django/db/backends/mysql/base.py
   django/trunk/django/db/backends/oracle/base.py
   django/trunk/django/db/backends/postgresql/base.py
   django/trunk/django/db/backends/postgresql_psycopg2/base.py
   django/trunk/django/db/backends/sqlite3/base.py
   django/trunk/django/db/models/base.py
Log:
Fixed #2108 -- allow saving of empty models, rather than just dropping them.


Modified: django/trunk/django/db/backends/ado_mssql/base.py
===================================================================
--- django/trunk/django/db/backends/ado_mssql/base.py   2006-06-08 05:04:10 UTC 
(rev 3114)
+++ django/trunk/django/db/backends/ado_mssql/base.py   2006-06-08 15:14:06 UTC 
(rev 3115)
@@ -131,6 +131,9 @@
 def get_drop_foreignkey_sql():
     return "DROP CONSTRAINT"
 
+def get_pk_default_value():
+    return "DEFAULT"
+
 OPERATOR_MAPPING = {
     'exact': '= %s',
     'iexact': 'LIKE %s',

Modified: django/trunk/django/db/backends/mysql/base.py
===================================================================
--- django/trunk/django/db/backends/mysql/base.py       2006-06-08 05:04:10 UTC 
(rev 3114)
+++ django/trunk/django/db/backends/mysql/base.py       2006-06-08 15:14:06 UTC 
(rev 3115)
@@ -158,6 +158,9 @@
 def get_drop_foreignkey_sql():
     return "DROP FOREIGN KEY"
 
+def get_pk_default_value():
+    return "DEFAULT"
+
 OPERATOR_MAPPING = {
     'exact': '= %s',
     'iexact': 'LIKE %s',

Modified: django/trunk/django/db/backends/oracle/base.py
===================================================================
--- django/trunk/django/db/backends/oracle/base.py      2006-06-08 05:04:10 UTC 
(rev 3114)
+++ django/trunk/django/db/backends/oracle/base.py      2006-06-08 15:14:06 UTC 
(rev 3115)
@@ -114,6 +114,9 @@
 def get_drop_foreignkey_sql():
     return "DROP FOREIGN KEY"
 
+def get_pk_default_value():
+    return "DEFAULT"
+
 OPERATOR_MAPPING = {
     'exact': '= %s',
     'iexact': 'LIKE %s',

Modified: django/trunk/django/db/backends/postgresql/base.py
===================================================================
--- django/trunk/django/db/backends/postgresql/base.py  2006-06-08 05:04:10 UTC 
(rev 3114)
+++ django/trunk/django/db/backends/postgresql/base.py  2006-06-08 15:14:06 UTC 
(rev 3115)
@@ -108,6 +108,9 @@
 def get_drop_foreignkey_sql():
     return "DROP CONSTRAINT"
 
+def get_pk_default_value():
+    return "DEFAULT"
+
 # Register these custom typecasts, because Django expects dates/times to be
 # in Python's native (standard-library) datetime/time format, whereas psycopg
 # use mx.DateTime by default.

Modified: django/trunk/django/db/backends/postgresql_psycopg2/base.py
===================================================================
--- django/trunk/django/db/backends/postgresql_psycopg2/base.py 2006-06-08 
05:04:10 UTC (rev 3114)
+++ django/trunk/django/db/backends/postgresql_psycopg2/base.py 2006-06-08 
15:14:06 UTC (rev 3115)
@@ -114,6 +114,9 @@
 def get_drop_foreignkey_sql():
     return "DROP CONSTRAINT"
 
+def get_pk_default_value():
+    return "DEFAULT"
+
 OPERATOR_MAPPING = {
     'exact': '= %s',
     'iexact': 'ILIKE %s',

Modified: django/trunk/django/db/backends/sqlite3/base.py
===================================================================
--- django/trunk/django/db/backends/sqlite3/base.py     2006-06-08 05:04:10 UTC 
(rev 3114)
+++ django/trunk/django/db/backends/sqlite3/base.py     2006-06-08 15:14:06 UTC 
(rev 3115)
@@ -130,6 +130,9 @@
 def get_drop_foreignkey_sql():
     return ""
 
+def get_pk_default_value():
+    return "NULL"
+
 def _sqlite_date_trunc(lookup_type, dt):
     try:
         dt = util.typecast_timestamp(dt)

Modified: django/trunk/django/db/models/base.py
===================================================================
--- django/trunk/django/db/models/base.py       2006-06-08 05:04:10 UTC (rev 
3114)
+++ django/trunk/django/db/models/base.py       2006-06-08 15:14:06 UTC (rev 
3115)
@@ -189,6 +189,12 @@
                     ','.join(placeholders)), db_values)
                 if self._meta.has_auto_field and not pk_set:
                     setattr(self, self._meta.pk.attname, 
backend.get_last_insert_id(cursor, self._meta.db_table, self._meta.pk.column))
+            else:
+                # Create a new record with defaults for everything.
+                cursor.execute("INSERT INTO %s (%s) VALUES (%s)" %
+                    (backend.quote_name(self._meta.db_table), 
+                     backend.quote_name(self._meta.pk.column),
+                     backend.get_pk_default_value()))
         transaction.commit_unless_managed()
 
         # Run any post-save hooks.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates
-~----------~----~----~----~------~----~------~--~---

Reply via email to