Thanks for the info and pointers Karen, I really appreciate it. I got
the feeling this might be a semi-scary way when searching the web for
meta and python this afternoon, and didn't really find a lot. I did up
screen prototypes for this app, and then designed a db model to
accommodate it, and now need to write the python code for the db and
the views, etc. That's probably the reverse order a lot of django devs
use, but it has worked well for me over the years. And, I always look
at the actual db structure and try to reduce wasted space etc. I'll do
some re-thinking here - I was actually torn on whether to use subtypes
or not. More complicated (bad) but better db space usage (good). I
guess disk space is pretty cheap these days lol.

Thanks again,

Peter

On May 6, 6:25 pm, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> On Tue, May 6, 2008 at 3:01 PM, Peter Bailey <[EMAIL PROTECTED]> wrote:
>
> > Hey Karen. I used manage.py validate. My model validated before I
> > added the abstract class and changed the class signatures. But I
> > probably did something silly. Here is a chunk of the code:
>
> > # will use this for subclassing into our item subtypes
> > class AbstractType(models.Model):
> >    name = models.CharField(max_length=100)
> >    class Meta:
> >        abstract = True
>
> > class Item(models.Model):
> >    """Item information for survey pages - pages will contain one or
> > more of these"""
> >    sub_item = models.ForeignKey(AbstractType)
>
> This is the problem: you can't have a ForeignKey to an abstract model.  See
> this thread:
>
> http://groups.google.com/group/django-developers/browse_thread/thread...
>
> particularly Malcolm's reply.  As mentioned in that thread, Django's way to
> have a ForeignKey "point" to an unknown (or incompletely specified) type is
> something called generic relations.  Though it might seem (as suggested at
> the beginning of that thread) that generic relations could be dropped in
> favor of model inheritance, that's not actually the case (as Malcolm
> describes).
>
> Alternatively, perhaps your use case would be better served by non-abstract
> inheritance?  Inheritance doc is here:
>
> http://www.djangoproject.com/documentation/model-api/#model-inheritance
>
> You probably want to give it a careful read and see which way best fits with
> they way you are approaching your problem.
>
> [snipped remainder of model definitions]
>
> > Well there is some of the model code - thanks for taking a look - I
> > think I need to spend a couple of weeks reading 24 hours a day to get
> > up to speed on all this technology, But I have just escaped from dot
> > niet and asp and sql server etc etc. Oh, what a feeling, what a rush!
>
> You are rather jumping into the deep end by starting off with inheritance,
> which only recently landed in the Django trunk.  So there are probably not
> that many blog posts or mailing list threads yet with guidance, sample
> scenarios, how to use the feature. etc.  But if you're comfortable with a
> steep learning curve, in the end I expect you will figure it out.  Good
> luck!
>
> Karen
>
> > Cheers
>
> > On May 6, 2:34 pm, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> > > On Tue, May 6, 2008 at 2:25 PM, Peter Bailey <[EMAIL PROTECTED]>
> > wrote:
>
> > > > Hey alen. I have tried implementing this and it makes good sense as
> > > > far as I can see, but when I validate the model I always get an
> > > > AttributeError: 'NoneType' object has no attribute 'name'.
>
> > > How are you validating the model?
>
> > > I have tried removing name from the definition of the class - same
>
> > > > message (not sure where it is getting 'name' from since I deleted it.
> > > > I also looked around and saw that some other have had similar
> > > > problems, and it seemed to be a string definition problem. So I put
> > > > back 'name' and changed it to an IntegerField - same unhappy result.
>
> > > > Do you have any notion of what the problem is? The code looks right to
> > > > me.
>
> > > It sounds like you have some code somewhere that is expecting to always
> > be
> > > handed an instance of your model, and thus be able to access the field
> > > 'name', but it is in fact sometimes getting handed None.  When handed
> > None,
> > > it still tries to access 'name', but since None has no attribute 'name',
> > you
> > > get the error.  If you post the code someone could probably help
> > pinpoint
> > > the error more specifically.
>
> > > Karen
>
> > > > Thanks,
>
> > > > Peter
>
> > > > On May 6, 1:33 pm, Peter Bailey <[EMAIL PROTECTED]> wrote:
> > > > > Thanks very much for your solution and reply alen. I'm learning the
> > > > > ins and outs of python and django at the same time - fun adventure -
> > > > > so far python is blowing me away - I love it. Better than anything I
> > > > > have used before - 3 assemblers,c, c++ java, vb, ruby, php, asp, etc
> > > > > (guess I am dating myself lol - most people don't seem to even ever
> > > > > have looked at assembler these days. I used to love it - 7 years of
> > > > > that after university) Oh, and of course C was always the bomb too
> > :-)
>
> > > > > Thanks again,
>
> > > > > Peter
>
> > > > > On May 6, 12:46 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
> > > > > wrote:
>
> > > > > > Define a 'abstract' attribute of Meta inner class and set it to
> > true
> > > > > > like so:
>
> > > > > > class AbstractType(models.Model):
> > > > > >     name = models.CharField(max_length=100)
>
> > > > > >     class Meta:
> > > > > >         abstract = True
>
> > > > > > class RadioBoxTypes(AbstractType):
> > > > > >     radio_lable = models.CharField(max_length=20)
>
> > > > > > Regards,
> > > > > > -Alen
>
> > > > > > On May 6, 5:43 pm, Peter Bailey <[EMAIL PROTECTED]> wrote:
>
> > > > > > > I have designed a small db model (on paper) and want to
> > implement it
> > > > > > > in my models.py file. So far, this has been pretty straight
> > forward,
> > > > > > > but I have a generic superclass and several subclasses, and I am
> > > > > > > unsure how to implement this.
>
> > > > > > > My DB has page objects (webpages) with a few common attributes,
> > and
> > > > a
> > > > > > > fk to an Item object. The item object is the generic superclass.
> > It
> > > > > > > could be a RadioType, a CheckBoxType, a VerbatimType, etc. These
> > all
> > > > > > > have attributes specific to themselves.
>
> > > > > > > Anyway, I don't grok how to set up this type of relationship in
> > my
> > > > > > > models.py file. Is there a standard way of doing this, or does
> > > > anyone
> > > > > > > have an suggestions or can point me to some relevant info?
>
> > > > > > > e.g.     Pages - pointed to by fk in Items
> > > > > > >           ----------
>
> > > > > > >           Items - has key to one of the below
> > > > > > >           --------
>
> > > > > > > RadioBoxTypes   CheckboxTypes   VerbatimTypes   etc
> > > > > > > -----------------------   -----------------------
> > > > > > > ---------------------    ----
>
> > > > > > > Thanks very much. Sorry if this is a dumb question - always fun
> > > > being
> > > > > > > a newbie :-(
>
> > > > > > > Peter
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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