Opened 14 years ago

Last modified 14 years ago

#15082 closed

delete() does not function consistently with CharField PKs — at Initial Version

Reported by: w004dal Owned by: nobody
Component: Core (Other) Version: 1.2
Severity: Keywords: model, db
Cc: w004dal@… Triage Stage: Unreviewed
Has patch: no Needs documentation: yes
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I'm working with MyISAM tables with MySQL and have the following behavior with delete() on Django 1.2.3-1 on Fedora Core 12.

class DoesWork(models.Model):

mac_id = models.CharField(max_length=17)
ip = models.CharField('Host/IP Address', max_length=255)

class DoesNotWork(models.Model):

mac_id = models.CharField(max_length=17, primary_key=True)
ip = models.CharField('Host/IP Address', max_length=255)

The following works as expected, creating, deleting, and putting the item back:
zz = DoesWork.objects.create(mac_id='99:99:99:99:99:99', ip='127.0.0.1')
zz.delete() # remove from DB
zz.save() # it's back in the DB

However, if I use the DoesNotWork model, whose only difference is having a CharField as a primary key:
zz = DoesNotWork.objects.create(mac_id='99:99:99:99:99:99', ip='127.0.0.1')
zz.delete() # remove from DB
zz.save() # EXCEPTION THROWN:

IntegrityError: (1048, "Column 'mac_id' cannot be null")

I checked by printing out zz.dict, and the mac_id was 'None' with the DoesNotWork object, but was untouched with the DoesWork object.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top