Inlines are for related objects, meaning when I have a foreign key from A
to B, on A there is an actual database field that points to B, but on B
there's a virtual (related object) field implemented as a python method.
When you have a foreign key, the way the admin shows that is just to give
you a drop-down list so you can choose the corresponding object in the
other model.

To go back to the standard example, there is a foreign key pointing from
Book to Author. On the Author admin page you can see and edit all the
books, but on the Book page you just have a drop-down to select the
relevant author. You could think of it as Book extends in a certain sense
Author, so it has a field pointing to its parent.

What I would probably do in your situation is to get rid of the mailing
address and physical address in your Producer model, and add a type
field(which could be 'mailing' or 'physical' or maybe some more
possibilities) and a producer field foreign key. That would allow for
easily adding more types of addresses, and more than one of a given type.
If it's essential to guarantee that there is exactly one mailing address
and exactly one physical address, I would probably override the relevant
save methods to check for that when objects are saved.

On Wed, Feb 13, 2013 at 9:25 PM, Ray Hatfield <[email protected]>wrote:

> Hi,
>
> I have a model which requires two addresses: a mailing address and a
> physical address. From an OO perspective it makes sense to have an Address
> class and the Producer to have Address instances as properties, but I can't
> seem to achieve this in django while still being able to edit the addresses
> inline as part of the Producer admin.
>
> I've tried this sort of thing:
>
> class Address( models.Model ):
>     street = models.CharField( ... )
>     # city state zip, etc.
>
> class Producer( models.Model ):
>     mailing_address = models.OneToOneField( Address, related_name='+' )
>     physical_address = models.OneToOneField( Address, related_name='+' )
>
> but when I attempt to inline the addresses in the django admin I run into
> trouble. I get errors like:
>
> <class 'producers.models.Address'> has no ForeignKey to <class
> 'producers.models.Producer'>
>
> (This error is true, of course. But I was under the apparently erroneous
> impression that including related_name='+' would prevent django from
> setting up the reverse relationship.)
>
> I realize I could add a foreign key to Address to associate it with a
> specific Producer but this feels backwards to me. An Address shouldn't need
> to know whether it's for a Producer or some other object. It's just an
> address.
>
> I've been banging my head on this for far too long. Advice?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Adam Mesha <[email protected]>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to