I was hoping to avoid that type of code, but instead have put a field in the linked parent to indicate what type the child is and then have a method in the parent as a property which returns the correct child type. Works for now, would be nice if the framework kept track of it, but it's a rare case.
J On Jun 8, 12:41 pm, Dan Harris <dih0...@gmail.com> wrote: > Not sure if this will work as I don't usually do much with model > inheritance but according to docs > at:http://docs.djangoproject.com/en/dev/topics/db/models/#id7 > this might work (not pretty, but somewhat minimal code)... > > p = Parent1.objects.get(id=1) > try: > p.childa.basemthod() > except: > try: > p.childb.basemethod() > except: > raise Execption("not ChildA or ChildB") > > Django adds in the lower cased name of the class as a property when > you query the super class and throws an exception if you access a > property that isn't there. So something like the above "might" work. > And obviously if you have like 5 child classes, this gets ugly very > quickly. > > Dan Harris > dih0...@gmail.com > > On Jun 8, 3:27 pm, John M <retireonc...@gmail.com> wrote: > > > Hmm, that doesn't really get me what I want, it just caches the > > related child objects in one SQL query. > > > What I want is a single interface and have django figure out what type > > of child object I have (like multiple inheritance but 'better'). > > > So in my example: > > > p = Parent1.objects.get(id=1) > > p.child.basemethod() > > > django would know what p.child is (either ChildA or ChildB) and I > > wouldn't need to know. > > > Is that available? > > > J > > > On Jun 8, 11:09 am, Dejan Noveski <dr.m...@gmail.com> wrote: > > > >http://docs.djangoproject.com/en/dev/ref/models/querysets/#id4 > > > > select_related() > > > > On Tue, Jun 8, 2010 at 8:05 PM, John M <retireonc...@gmail.com> wrote: > > > > I've gotten model inheritance working just fine, but was hoping > > > > someone could confirm the best way to access the model. > > > > > When I have a Base model which has a ForeignKey to a parent table, and > > > > that base model has inherited models after it, how can I refer to only > > > > one name when referencing the parent model. > > > > > As an example: > > > > > class Base(models.Model): > > > > parent = models.ForeignKey(Model1) > > > > > class Meta: > > > > abstract = True > > > > > def basemethod(): > > > > print "hello" > > > > > class ChildA(Base): > > > > pass > > > > > class ChildB(Base): > > > > pass > > > > > p1 = Model1() > > > > p1.save > > > > x = ChildA() > > > > x.parent = P1 > > > > x.save() > > > > > p2 = Model1() > > > > p2.save() > > > > y = ChildB() > > > > y.parent = P1 > > > > y.save() > > > > > Now, I want to access the children from the parent, but I don't want > > > > to have to know what base class they are, is there a way to do that? > > > > Right now I'm using a property which figures it out based on some > > > > other fields, but would love to be able to say > > > > > p = Parent1.objects.get(id=1) > > > > p.child.basemethod() > > > > > Is this possible? > > > > > Thanks > > > > > -- > > > > You received this message because you are subscribed to the Google > > > > Groups > > > > "Django users" group. > > > > To post to this group, send email to django-us...@googlegroups.com. > > > > To unsubscribe from this group, send email to > > > > django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@google > > > > groups.com> > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/django-users?hl=en. > > > > -- > > > -- > > > Dejan Noveski > > > Web Developer > > > dr.m...@gmail.com > > > Twitter:http://twitter.com/dekomote|LinkedIn:http://mk.linkedin.com/in/dejannoveski -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.