python - 如何在 Django 模型中与父表共享子外部表
问题描述
我目前有这个设置:
class Address (models.Model):
Member = models.ForeignKey(Member, blank=True, null=True, on_delete=models.CASCADE)
Unit = models.ForeignKey(Unit, blank=True, null=True, on_delete=models.CASCADE)
Address1 = models.TextField(max_length=512)
Address2 = models.TextField(max_length=512, null=True, blank=True)
City = models.TextField(max_length=100)
State = models.TextField(max_length=100)
Zip = models.TextField(max_length=25)
Latitude = models.FloatField(null=True, blank=True)
Longitude = models.FloatField(null=True, blank=True)
Primary = models.BooleanField(default=False)
class Phone (models.Model):
Member = models.ForeignKey(Member, blank=True, null=True, on_delete=models.CASCADE)
Unit = models.ForeignKey(Unit, blank=True, null=True, on_delete=models.CASCADE)
Phone = models.CharField(max_length=25)
Type = models.CharField(max_length=25)
Primary = models.BooleanField(default=False)
class Member (models.Model):
FederationID = models.FloatField(unique=True)
UserId = models.ForeignKey(User, on_delete=models.CASCADE)
height = models.IntegerField(blank=True, null=True)
eye = models.CharField(blank=True, null=True)
hair = models.CharField(blank=True, null=True)
bio = models.TextField()
class Unit (models.Model):
Name = models.CharField(max_length=255)
Hull = models.CharField(max_length=20)
Type = models.CharField(max_length=20)
我正在尝试使用单个地址表来模拟成员和单位的地址。
我在问这是否是解决这个问题的正确方法?是否有更干燥的版本可以正确执行此操作。还要注意电话型号。同样的问题。谢谢。
解决方案
如果多个成员共享同一个地址怎么办?如果有新模型也需要地址怎么办?将 Address 字段放在 Member 和 Unit 模型中而不是反过来可能会更干净。
class Member(Model):
Address = ForeignKey(...)
class Unit(Model):
Address = ForeignKey(...)
并从地址中删除成员和单位字段。将具有地址而不是地址的成员视为具有成员更直观。
推荐阅读
- django - 如何在 django rest 框架中按 url 过滤
- mysql - 在 mysql 中选择 10 到 25
- powerbi - 我是否被迫使用 Power BI Desktop 向 Power BI 服务提供数据集,而不是本地或共享点文件?
- python - 在 Python 中使用 Sklearn 时出现“预期 2D 数组错误”
- r - R中的自动化分组和汇总
- flutter - 为应用栏中的文本添加填充
- c++ - 使用 atomic<> 和代码重新排序?Stroustrup 示例
- android - 不调用两次:从 ViewModel 调用 Single.just() 到 Activity 的结果
- stored-procedures - 我们可以在雪花中的 UDF 或 UDTF 中执行列表命令或存储过程吗?
- google-app-engine - 应用引擎灵活 - 正确自动缩放