Skip to content

Instantly share code, notes, and snippets.

@dadon
Created October 11, 2011 11:47
Show Gist options
  • Save dadon/1277890 to your computer and use it in GitHub Desktop.
Save dadon/1277890 to your computer and use it in GitHub Desktop.
[Django] OneToOneField with primary key bug?
from django.db import models
class Event(models.Model):
pass
class EventContent(models.Model):
event = models.OneToOneField(Event, primary_key=True, related_name='%(class)s')
type = 'default_event'
class Meta:
abstract = True
def __unicode__(self):
return u'Event #%d [%s]' % (self.type, self.event.id)
def save(self, force_insert=False, force_update=False, using=None):
if not hasattr(self, 'event'):
self.event = Event()
self.event.save()
return super(EventContent, self).save(force_insert, force_update, using)
class EventType1(EventContent):
type = 'type1_event'
class EventType2(EventContent):
type = 'type2_event'
e1 = EventType1()
e1.save()
print e1.event.id # 1
print EventType1.objects.all() # [<EventType1: Event #1 [type1_event]>]
e2 = EventType2()
e2.save()
print e2.event.id # 2
print EventType2.objects.all() # [<EventType2: Event #1 [type2_event]>]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment