У меня есть модель Django с моделью Person:
class Person(models.Model):
# Personal details
first_name = models.CharField(max_length=50)
middle_name = models.CharField(max_length=50, blank=True, null=True)
last_name = models.CharField(max_length=50)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
date_of_birth = models.DateField()
# Address
street_address = models.CharField(max_length=50)
suburb = models.CharField(max_length=30)
postcode = models.CharField(max_length=4)
state = models.CharField(max_length=3, choices=STATE_CHOICES)
#Contact Details
email = models.EmailField()
# Family
spouse = models.ForeignKey('self', null=True, blank=True)
children = models.ManyToManyField('self', null=True, blank=True)
home_church = models.ForeignKey('Church', null=True, blank=True)
Поле "middle_name" обнуляемо, я не думаю, что есть способ избежать этого, не так ли?
Тем не менее, у меня также есть Nullable ForeignKey для супруга, рекурсивный ManyToManyField для их детей и Nullable ForeignKey для церкви (при необходимости).
Мой вопрос - во-первых, каков текущий консенсус по допускаемым значениям внешних ключей? Должен ли я разрешить это здесь, или я должен создать какую-то "никому" или "неназначенную" модель, чтобы представлять отсутствие супруга / домашней церкви?
Или есть какой-то другой способ, которым я могу переделать этот дизайн в Джанго, чтобы приспособиться к этому?
И если я продолжу с нулевыми FK, есть ли какие-то предостережения в Django, о которых мне нужно знать? (осталось присоединиться?)
Cheers,
Victor