But that filter will just give me a list of tuples with RaidPhysicalDrive's values. I want to understand how I can include in the list I send to my template, the *additional* values for system name, storage name, and array name, so I can display/dump all the info in a table. I don't want to put in a link to RPD's in_array value and force the user to drill down two layers to get to the system name. I don't want to also pass in lists of array names, storage names, and system names and do nested forloops with if's to check -- that's the whole point of a well crafted select statement, so that you have your info all sorted out and ready to go.
On Aug 16, 6:46 pm, Alec Shaner <asha...@chumpland.org> wrote: > 1. What is your code for doing the filters? If you want to start with > physical drives it would be something like: > > RaidPhysicalDrive.objects.filter(in_array__in_storage__in_system__id=<id>) > > 2. In your template you've referenced pd.in_array_id, but don't you just >want pd.in_array if you're wanting to follow the FK to get RaidArray fields, > e.g., > > <td>{{ > pd.in_array.in_storage.in_system.name<http://pd.in_array_id.storage.in_system.name/>}}</td> > > On Mon, Aug 16, 2010 at 8:04 PM, Cindy <tit...@gmail.com> wrote: > > I'm having some trouble constructing a filter that's intended to work > > across multiple tables with selected fields. Here's a simplified > > outline of my models: > > > class System(models.Model): > > name = models.CharField(max_length=16) > > domain = models.CharField(max_length=255, default='example.com') > > > class RaidStorage(models.Model): > > in_system = models.ForeignKey(System) > > name = models.CharField(max_length=25) > > > class RaidArray(models.Model): > > in_storage = models.ForeignKey(RaidStorage) > > name = models.CharField(max_length=25) > > > class RaidPhysicalDrive(models.Model): > > in_array = models.ForeignKey(RaidArray) > > name = models.CharField(max_length=25) > > size = models.IntegerField(null=True, blank=True) > > serial = models.CharField(max_length=25) > > model = models.CharField(max_length=25) > > > Now, given a system id, I want to list all the physical drives from it > > along with info from the related tables. I would like something like > > > select System.name, RaidStorage.name, RaidArray.name, > > RaidPhysicalDrive.name, RaidPhysicalDrive.serial, > > RaidPhysicalDrive.model from System, RaidStorage, RaidArray, > > RaidPhysicalDrive where RaidPhysicalDrive.in_array=RaidAarray.id and > > RaidArray.in_storaage = RaidStorage.id and RaidStorage.in_system=id > > (etc) > > > I'm having a good deal of trouble coming up with the filters for > > this. I'm thinking that .values() and possibly .select_related() are > > key here, but so far I've failed at putting together anything that > > gives me the results I want (a list of physical drives associated with > > the selected system). The filter examples through the tutorials and > > such seem to all assume select *, and there's very little on dealing > > with grouping selective fields from multiple tables that I've found. > > > Part of the issue might be in the template as well; If I cheat and > > send it the correct list, I can't access part of the information I > > want: > > > {% for pd in pd_list %} > > <tr> > > <td>{{ pd.in_array_id.storage.in_system.name }}</td> > > <td>{{ pd.in_array_id.in_storage.name }}</td> > > <td>{{ pd.in_array_id.name }}</td> > > <td>{{ pd.name }}</td> > > <td>{{ pd.serial }}</td> > > <td>{{ pd.model }}</td> > > </tr> > > {% endfor %} > > > results in the first three columns of the table being empty... > > templates don't seem to "follow" back the way they do in views.py, > > etc. So I'm sure I need to create a dictionary or list from the > > original views.py def to pass to the template but as I say, I'm not > > sure of how to use .values or .select_related (or whatever else item > > I'm overlooking). > > > I did search through the group a bit, but didn't find anything > > directly helpful. > > > Thanks! > > --Cindy > > > -- > > 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...@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.