外键Django模型

我正在尝试创建3个模型;Person,AddressAnniversy。计划是每个人有一个住址和一周年纪念日。但是每个地址和周年纪念日可以有多个人。

到目前为止,我有以下内容,但我认为这种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类型中以创建多对一关系:

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条目中引用地址和周年纪念日。

AnniversaryAddress对象将被给定一个反向的,向后关系太; 默认情况下,它将被调用,person_set但是你可以根据需要配置其他名称。

以上是 外键Django模型 的全部内容, 来源链接: utcz.com/qa/400481.html

回到顶部