django - 数据库设计 - 需要多个表1+ phone_numbers)

时间:2009-02-11 16:40:33

标签: django-models

关于如何设置dbase关系的问题(新手,这可能是微不足道的)

遵循django教程(民意调查,选择);据了解,1民意调查有很多选择,因此许多选择指向单一民意调查。

   class Poll(models.Model):
      question = models.CharField(max_length=200)
      ...

   class Choice(models.Model):
      poll = models.ForeignKey(Poll)
      ...         

问题: 我有一个有地方,人等的数据库(多表)。 我的表的一个子集具有类似的字段。 我想要一个地方有1+ phone_number。 我希望一个人拥有1+个phone_number。 我可能希望其他表有1+个phone_number。

如果我遵循民意调查/选择方法,那么我的问题就会出现在PhoneNumber下面显示的问号上。

   class Person(models.Model):
      firstname = models.CharField(max_length=20)
      ...

   class Place(models.Model):
      description = models.CharField(max_length=200)
      ...

   class PhoneNumber(models.Model):
      ??? = models.ForeignKey(???)
      ...

我考虑过使用继承,以便Person和Place都从相同的基类继承。但我可能还有其他字段,除了phone_number,我有类似的情况,并跨越不同的表子集。 E.g。

               phone_number(s)     comments
               ---------------     --------
Person         yes                 no
Place          yes                 yes
Contract       no                  yes
...

如何正确设计这些类型的关系的任何建议将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找Generic RelationsAlso here

答案 1 :(得分:0)

检查ContenType应用,特别是Generic Relations。基本上,您将人员/地点对象的类型和ID存储在PhoneNumber对象上。