说我有以下型号:
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?
最后,对于像配偶/子女这样的可选外键(一个人可能没有结婚,或者可能没有孩子),你应该如何处理这些?
干杯, 维克多
答案 0 :(得分:0)
(A)电话号码实际上不是整数,它们是字符串,应该存储在数据库中。
(B)Null基本上是可选外键的正确方法。