Thanks All.

Thanks Javier.
That makes sense, I'm implementing it via a OneToOe relationship now.



On Sep 17, 4:38 am, Tom Evans <tevans...@googlemail.com> wrote:
> On Wed, 2009-09-16 at 17:15 -0500, Javier Guerra wrote:
> > On Wed, Sep 16, 2009 at 1:01 PM, PlanetUnknown
> > <nikhil.kodil...@gmail.com> wrote:
>
> > > Thanks Karen.
> > > Let me explain it a bit more.
> > > e.g.
> > > All CONTACT details are present in one table - email, home address,
> > > work address, home phone, work phone etc.
> > > Forget about the statement about growing for now.
> > > Since each user "has-a" contact it is a pure one-to-one relationship
> > > and not a one-to-many or many-to-one; each user in the USER table will
> > > have only one corresponding entry in the CONTACT table.
> > > Does this help explaining the issue ?
> > > The above is just an example, the main question is how does one
> > > usually implement a "has-a" relationship in dJango.
>
> > i think a big part of your problem is that you're using java-inspired
> > OOP terminology.  it's much easier if you use RDBMS terminology (after
> > all, it will all be stored in a RDBMS).  I guess that the Oracle/Java
> > systems you're used to show the DB as a persistence system for
> > objects, while Django's ORM creates classes that represent the DB.
> > same thing, different philosophies.
>
> > the many-to-one relationship is exactly what you said you used in
> > Oracle: a user-id field on the Contact table.
>
> To me that indicates the wrong relationship. The OP said that all Users
> have exactly one Contact. He didn't say that Contacts have users. He
> could have a Business model, which could have many contacts etc.
>
> I would implement this as ForeignKey to Contact on the User model, with
> a unique constraint.
>
>
>
> > the one-to-one relationship is the same thing, but with an added
> > UNIQUE constraint on that key, so that you can have only one contact
> > for each user.  it has nothing to do with inheritance.  the fact that
> > inheritance is implemented with one-to-one relationships is just
> > incidental.
>
> > in most cases, you want the possibility of several contacts per user,
> > so you can use the many-to-one.  the only drawback if that you get an
> > extra step to go from user to contact: "User.contact_set.all()". if
> > you use one-to-one, the ORM lets you skip that step and write simply
> > "User.contact".
>
>
--~--~---------~--~----~------------~-------~--~----~
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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to