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 at http://groups.google.com/group/django-users?hl=en.