Допустим, у меня есть следующая модель:
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?
Наконец, для необязательных внешних ключей, таких как супруг / дети (человек может не состоять в браке или может не иметь каких-либодети), как вы должны справиться с этим?
Ура, Виктор