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.

