Django数据库设计 - Null for

时间:2010-11-30 03:00:42

标签: django database-design null

说我有以下型号:

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字段,您可以设置“blank = True”,如果用户将表单字段留空,Django将存储一个空字符串。没关系。

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

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

干杯, 维克多

1 个答案:

答案 0 :(得分:0)

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

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