http://docs.djangoproject.com/en/1.2/topics/db/models/#id7

You can access sub-classes with place.restaurant and place.gardenstore
if the model has them.

I did something similar the other day but added an extra field to
parent class to indicate which type of a child model it had (1 for
Restaurant etc). I don't know if this is a proper way to handle the
situation but it works for me.

-Jori

On May 18, 7:11 pm, Lee Hinde <leehi...@gmail.com> wrote:
> On Tue, May 18, 2010 at 4:27 AM, Jani Tiainen <rede...@gmail.com> wrote:
> > > Given the following:
>
> > > class Place(models.Model):
> > >     name = models.CharField(max_length=50)
> > >     address = models.CharField(max_length=80)
> > >     zip_code = models.CharField(max_length=15)
>
> > > class Restaurant(Place):
> > >     serves_hot_dogs = models.BooleanField()
> > >     serves_pizza = models.BooleanField()
>
> > > class GardenStore(Place):
> > >     sells_lady_bugs = models.BooleanField()
>
> > > and given a query on zip_code in Places, how would I know whether a
> > > Place is a Restaurant or a Garden Store?
>
> > You don't OOTB.
>
> > I asked same thing quite a while ago - you should be able to find my
> > thoughts
> > somewhere in this group archives.
>
> > Rationale behind this is that you're trying to achieve something pretty
> > much
> > impossible - inheritance in relational world.
>
> > Thing is that you can have you can really have both: Restaurant and
> > GardenStore instance to point to same place - so is that correct case or
> > not?
>
> > Note that "inheritance" is made so that you have relation from Restaurant
> > and
> > GardenStore tables to Place. There is no simple mechanism to prevent your
> > data
> > to have references from both "children" to point to "parent".
>
> > You can have property/method on your model that tries to determine which
> > one
> > is correct.
>
> > Or you can re-factor your models (which is usually less painful) so that
> > your
> > place, provided that it is unique (which actually in this case might not
> > be).
> > Add simple discriminator field to tell what type of child you must also
> > fetch
> > to make data complete.
>
>  Thanks Jani; I'd seen some of the older threads, with similar work arounds,
> but those discussions pre-dated recent advances. I'll look again for the
> thread you mention.
>
> --
> 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 
> athttp://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