I'm trying to create 3 models ; Person
, Address
and Anniversy
. The plan is to have one address and one anniversy for each person. But each address and anniversy can have multiple persons.
So far I have the following, but I think the OneToMany(foreign key)
relationships maybe the wrong way round. i.e each address can have one person but each person can have multiple addresses.
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=50)
birthday = models.DateField()
def __unicode__(self):
return u'%s' % (self.name)
class Address(models.Model):
person = models.ForeignKey(Person)
address = models.CharField(max_length=150)
def __unicode__(self):
return u'%s' % (self.address)
class Anniversy(models.Model):
person = models.ForeignKey(Person)
anniversy = models.DateField()
def __unicode__(self):
return u'%s' % (self.anniversy)
You create the relationships the other way around; add foreign keys to the
Person
type to create a Many-to-One relationship:Any one person can only be connected to one address and one anniversary, but addresses and anniversaries can be referenced from multiple
Person
entries.Anniversary
andAddress
objects will be given a reverse, backwards relationship too; by default it'll be calledperson_set
but you can configure a different name if you need to. See Following relationships "backward" in the queries documentation.