2010-11-30 47 views
0

说我有以下型号:Django的数据库设计 - 原为

class Person(models.Model): 
    street_address = models.CharField(max_length=50, blank=True) 
    suburb = models.CharField(max_length=30) 
    postcode = models.IntegerField() 
    state = models.CharField(max_length=3) 
    email = models.EmailField() 
    mobile_phone_number = models.IntegerField(max_length=12) 
    home_phone_number = models.IntegerField(max_length=10, null=True, blank=True) 
    work_phone_number = models.IntegerField(max_length=8, null=True, blank=True) 
    spouse = models.ForeignKey('self', null=True, blank=True) 
    children = models.ManyToManyField('self', null=True, blank=True) 

一些上述领域的意图是可选的(例如STREET_ADDRESS,home_phone_number和work_phone_number,以及配偶/子女)。

在Django中,对于CharField字段,可以设置“空白=真”,如果用户离开表单字段为空,Django存储一个空字符串。没关系。

但是,对于像home_phone_number和work_phone_number这样的整数字段,这不起作用 - 我不得不使用“null = True”来处理未在这些详细信息中提交的人的情况。有没有更好的方法,明智的模型/数据库设计来处理这个问题,而不是NULL?

最后,可选外键像配偶/子女(一个人可以不结婚,或者没有孩子),你应该如何处理这些?

干杯, 维克多

回答

0

(A)电话号码实际上不是整数,它们是字符串,并且应存储在数据库本身。

(B)空基本上是正确的方式可选外键。

+0

亚当五:感谢您的快速反应=)。是的,在阅读更多内容之后,你说得对,电话号码应该是字符串,它不喜欢我会对它们进行数学运算。 – victorhooi 2010-11-30 05:02:12