首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >外键Django模型

外键Django模型
EN

Stack Overflow用户
提问于 2013-02-02 23:43:28
回答 1查看 145.1K关注 0票数 61

我正在尝试创建3个模型:PersonAddressAnniversy。计划是为每个人提供一个地址和一个周年纪念。但是每个地址和周年纪念可以有多个人。

到目前为止,我有以下几点,但我认为OneToMany(foreign key)关系可能是错误的。也就是说,每个地址可以有一个人,但每个人可以有多个地址。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2020-02-10 18:08:23

我建议,如果使用基于应用程序的方法来分离逻辑关注点,那么使用ForeignKey关系的字符串模型引用会更好一些。

因此,在Martijn的答案上进行扩展:

代码语言:javascript
复制
class Person(models.Model):
    name = models.CharField(max_length=50)
    birthday = models.DateField()
    anniversary = models.ForeignKey(
        'app_label.Anniversary', on_delete=models.CASCADE)
    address = models.ForeignKey(
        'app_label.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()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14663523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档