Jani Tiainen kirjoitti:
> model.py:
>
> from django.db import models
>
> class Order(models.Model):
> name = models.CharField(max_length=64)
>
> def __unicode__(self):
> return self.name
>
> class Product(models.Model):
> name = models.CharField(max_length=64)
>
> def __unicode__(self):
> return self.name
>
> class SubProduct1(Product):
> prop1 = models.FloatField()
>
> def __unicode__(self):
> return self.name
>
> class SubProduct2(Product):
> prop2 = models.EmailField()
>
> def __unicode__(self):
> return self.name
>
> class OrderProduct(models.Model):
> order = models.ForeignKey(Order)
> product = models.ForeignKey(Product)
>
> amount = models.IntegerField()
>
> def __unicode__(self):
> return u'%s - %s - %s' % (self.order.name, self.product.name,
> self.amount)
>
>
> Now it's trivial play with sub products and add spesific subproducts to
> orderproduct.
>
> But, then, how to list all SubProducts that belongs to spesific order?
>
> Specially thing stops at "Product", it doesn't know which one of those
> two subproducts it actually is.
>
> I did following quick hack to get around this problem (added this to
> Product model):
>
> def _get_subproduct(self):
> for attr in ['subproduct1', 'subproduct2', ]:
> try:
> return getattr(self, attr)
> except ObjectDoesNotExist:
> pass
>
> subproduct = property(_get_subproduct)
>
>
> This just don't feel optimal solution, specially it hits database for
> every subitem tried.
>
> Any better way to achieve same without hitting that much database?
Or rather I would like to make "product" proterty in OrderProduct to
return correct subtype right away since I'm not really interested in
Product model itself but spesific sub types.
Should I do something like:
class OrderProduct(models.Model):
order = models.ForeignKey(Order)
product_ = models.ForeignKey(Product)
amount = models.IntegerField()
def _get_product(self):
return product_.subproduct
product = property(_get_product)
--
Jani Tiainen
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---