Разработка базы данных Django - Null для - PullRequest
0 голосов
/ 30 ноября 2010

Допустим, у меня есть следующая модель:

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, а также spouse / children).

В Django для полей CharField вы можете установить «blank = True», и если пользователь оставит поле формы пустым, Django сохранит пустую строку.Это нормально.

Однако, для целочисленных полей, таких как home_phone_number и work_phone_number, это не работает - мне пришлось использовать «null = True», чтобы разобраться со случаем, когда люди не представили эти данные,Есть ли лучший способ, дизайн модели / базы данных разумнее иметь дело с этим, и не иметь NULL?

Наконец, для необязательных внешних ключей, таких как супруг / дети (человек может не состоять в браке или может не иметь каких-либодети), как вы должны справиться с этим?

Ура, Виктор

1 Ответ

0 голосов
/ 30 ноября 2010

(A) Телефонные номера на самом деле не являются целыми числами, они являются символьными строками и должны храниться в базе данных как таковой.

(B) Нуль - это в основном правильный путь к необязательным внешним ключам.

...