我正在尝试创建3个模型;Person,Address和Anniversy。计划是每个人有一个住址和一周年纪念日。但是每个地址和周年纪念日可以有多个人。
Person,Address
Anniversy
到目前为止,我有以下内容,但我认为这种OneToMany(foreign key)关系可能是错误的。即每个地址可以有一个人,但每个人可以有多个地址。
OneToMany(foreign key)
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)
你以相反的方式创建关系。将外键添加到Person类型中以创建多对一关系:
Person
class Person(models.Model): name = models.CharField(max_length=50) birthday = models.DateField() anniversary = models.ForeignKey( Anniversary, on_delete=models.CASCADE) address = models.ForeignKey( Address, on_delete=models.CASCADE) class Address(models.Model): line1 = models.CharField(max_length=150) line2 = models.CharField(max_length=150) postalcode = models.CharField(max_length=10) city = models.CharField(max_length=150) country = models.CharField(max_length=150) class Anniversary(models.Model): date = models.DateField()
任何人只能连接一个地址和一周年纪念日,但是可以从多个Person条目中引用地址和周年纪念日。
Anniversary和Address对象将被给定一个反向的,向后关系太; 默认情况下,它将被调用,person_set但是你可以根据需要配置其他名称。
Anniversary
Address
person_set