我有以下型号
@python_2_unicode_compatible
class Booking(models.Model):
session = models.ForeignKey(verbose_name=_('Session'), to=Session, default=None, null=False, blank=False)
quantity = models.PositiveIntegerField(verbose_name=_('Quantity'), default=1, null=False, blank=False)
price = models.DecimalField(verbose_name=_('Price'), max_digits=10, decimal_places=2,
default=None, null=False, blank=False)
name = models.CharField(verbose_name=_('Name'), max_length=100, default=None, null=False, blank=False)
email = models.EmailField(verbose_name=_('Email'), default=None, null=True, blank=True)
phone_number = models.CharField(verbose_name=_('Phone Number'), max_length=30, default=None, null=True, blank=True)
说我需要更改我的电子邮件和phone_number字段。我希望他们拥有null=False
和blank=False
。这些改动是否需要新的迁移?
答案 0 :(得分:4)
是的,他们这样做。 null=False
需要更改数据库架构本身; blank=False
没有,但Django无论如何都需要迁移,以便迁移运行者的模型状态的内部图是最新的。
答案 1 :(得分:4)
不确定。要检查它,您可以运行python manage.py makemigrations --dry-run
(--dry-run不会保存新的迁移文件,但会显示是否有必要)
答案 2 :(得分:1)
当然可以。您对模型字段所做的每项更改(从简单地更改help_text
到完全重命名模型字段)都需要makemigrations
和migrate
才能在将来重建您的模型。
答案 3 :(得分:1)
https://docs.djangoproject.com/en/1.11/topics/db/models/#field-options
Django文件说:
空
如果为True,Django会将空值存储为数据库中的NULL。默认>为假。
空白
如果为True,则允许该字段为空。默认值为False。
请注意,这与null不同。 null纯粹与数据库相关, 而空白与验证有关。如果字段为空= True,则表单 验证将允许输入空值。如果字段为空= False, 该领域将是必需的。
要更改null
,您需要迁移
对于blank
中的更改,您无需迁移,因为其管理员表单相关