Hi,
I have looked a lot and have not yet figured out how to accomplish this.
Let me show with an example what I am trying to accomplish.
class WidgetType(models.Model):
"""WidgetType categorizes the type of Widget"""
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, editable=False)
class Meta:
db_table = u'widget_type'
class Widget(models.Model):
"""Widget is a component of WidgetType type that renders a DataStream
on a defined Dashboard"""
widget_type = models.ForeignKey(WidgetType)
name = models.CharField(max_length=255, null=True, blank=True)
class Meta:
db_table = u'widget'
class LineChart(Widget):
"""Line Chart Widget Proxy"""
class Meta:
proxy = True
def save(self, *args, **kwargs):
self.widget_type = WidgetType.objects.get(slug='line-chart')
super(LineChart, self).save(*args, **kwargs)
As you can see above, there are 3 classes (simplified). I have 2 tables:
"widget_type" and "widget". When creating an instance of Widget, one must
select the type of widget. So one could create instances of LineChart,
BarChart, ScatterChart, etc and all of this models would persist to the
same table, "widget".
The issues I have with this design is that one doesn't always know what
type of widget it is so the following is not possible:
widgets = LineChart.objects.all()
What I need is to be able to query the Widget class and get back subclasses
based on their type:
>>> widgets = Widget.objects.all()
>>> print widgets
[<LineChart: 1>,<LineChart: 2>,<LineChart: 3>,<BarChart: 4>,<lineChart:
5>,<ScatterChart: 6>]
Any help appreciated.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/aQQojIweoPoJ.
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.