Skip to content

Instantly share code, notes, and snippets.

@josiahcarlson
Created October 17, 2013 22:21
Show Gist options
  • Save josiahcarlson/7033337 to your computer and use it in GitHub Desktop.
Save josiahcarlson/7033337 to your computer and use it in GitHub Desktop.
An example of building a many-to-many relationship with rom.
import rom
class ModelA(rom.Model):
m2m_test = rom.OneToMany('HiddenModel')
@property
def b_models(self):
return [x.model_b for x in self.m2m_test]
def add_reference(self, b_object):
# requires session.commit()
HiddenModel(model_a=self, model_b=b_object)
def del_reference(self, b_object):
pk = b_object._pk
for x in self.m2m_test:
if x.model_b._pk == pk:
x.delete()
class ModelB(rom.Model):
m2m_test = rom.OneToMany('HiddenModel')
@property
def a_models(self):
return [x.model_a for x in self.m2m_test]
def add_reference(self, a_object):
# requires session.commit()
HiddenModel(model_a=a_object, model_b=self)
def del_reference(self, a_object):
pk = a_object._pk
for x in self.m2m_test:
if x.model_a._pk == pk:
x.delete()
class HiddenModel(rom.Model):
model_a = rom.ManyToOne('ModelA')
model_b = rom.ManyToOne('ModelB')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment