sounds like magic, though django usually handles magic well :)

On Tue, Jun 8, 2010 at 7:18 PM, John M <retireonc...@gmail.com> wrote:
> 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.
>
>

-- 
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.

Reply via email to