On Fri, May 15, 2009 at 1:38 PM, Rusty Greer <[email protected]> wrote:

>
>
> On Fri, May 15, 2009 at 10:10 AM, Alex Gaynor <[email protected]>wrote:
>
>>
>>
>> On Fri, May 15, 2009 at 12:08 PM, Rusty Greer <[email protected]> wrote:
>>
>>>
>>>
>>> On Fri, May 15, 2009 at 9:57 AM, George Song <[email protected]> wrote:
>>>
>>>>
>>>> On 5/15/2009 8:18 AM, Rusty Greer wrote:
>>>> >
>>>> >
>>>> > I have something like this:
>>>> >
>>>> > class Class1(models.Model):
>>>> >     // lots of fields here
>>>> >
>>>> > class AbstractThing(models.Model):
>>>> >     // lots of fields here
>>>> >     class1field = model.ForeignKey(Class1)
>>>> >     class Meta:
>>>> >         abstract = True
>>>> >
>>>> > class ThingType1(AbstractThing):
>>>> >     // lots of fields here
>>>> >
>>>> > class ThingType2(AbstractThing):
>>>> >     // lots of fields here
>>>> >
>>>> >
>>>> > in my template, i want to be able to do something like:
>>>> >     class1.abstractthing_set.all
>>>> >
>>>> > but that doesn't seem to work, i seem to have to do:
>>>> >     class1.thingtype1_set.all and class1.thingtype2_set.all
>>>> >
>>>> > does this make sense?  am i missing something?
>>>> >
>>>> > any help would be appreciated.
>>>>
>>>> The pattern you describe should work fine. What exactly isn't working?
>>>>
>>>> --
>>>> George
>>>>
>>>>
>>> from within the template, class1.abstractthing_set.all returns nothing,
>>> class1.thingtype1_set.all returns exactly what is expected
>>>
>>> from python code, class1.abstractthing_set.all gives me an
>>> AttributeError
>>>
>>> 'class1' object has no attribute 'abstractthing_set'
>>>
>>>
>>> class1.thingtype1_set.all returns exactly what is expected
>>>
>>> i was hoping that the abstractthing_set would return all of the objects
>>> of both thingtype1 and thingtype2
>>>
>>>
>>>
>>>
>> An abstract model doesn't exist in the database, therefore trying to get
>> objects for it doesn't make sense, you either need to use concrete
>> inheritance or manually query the individual models.
>>
>> Alex
>>
>
> OK.  I guess that makes sense.  I was thinking more from an object point of
> view.  If I use a concrete base class instead of an abstract one, there will
> be multiple tables combined to represent the data.  So each fetch will be a
> join of some number of tables.
>
> Because the tables are somewhat similar, would it be more efficient to have
> 1 table with some unused fields or multiple tables and having to do a join?
>
> Rusty
>
> >
>
It depends, if there are times when you want to query against only one of
them I'd probably have seperate tables, otherwise just one table with a type
field or something.

Alex

-- 
"I disapprove of what you say, but I will defend to the death your right to
say it." --Voltaire
"The people's good is the highest law."--Cicero

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to