2010-11-30 82 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