ber*_*uic 5 django django-models django-migrations
在对此问题的评论中,我询问了如何使用默认值函数删除字段.总之,示例代码是:
def get_deadline():
return datetime.today() + timedelta(days=20)
class Bill(models.Model):
name = models.CharField(max_length=50)
customer = models.ForeignKey(User, related_name='bills')
date = models.DateField(default=datetime.today)
deadline = models.DateField(default=get_deadline)
Run Code Online (Sandbox Code Playgroud)
我对代码的问题是:
如何
deadline在删除get_deadline功能的同时再次删除该字段 ?我删除了一个带有默认值函数的字段,但是现在Django在删除函数后在启动时崩溃了.我可以手动编辑迁移,在这种情况下也可以,但如果您只是更改了默认功能,并想删除旧功能怎么办?
我最终删除了引用它的迁移的默认部分,但是如何很好地删除它?
我能想到的唯一方法是压缩迁移,这样使用该功能的迁移就会消失,但这并不总是一种选择.
遵循历史模型的文档:
对于字段选项中的函数的引用(例如,
upload_to和limit_choices_to管理器的模型管理器声明)use_in_migrations = True在迁移中被序列化,因此只要存在引用它们的迁移,就需要保留函数和类.还需要保留任何自定义模型字段,因为这些字段是由迁移直接导入的......
要删除旧引用,可以压缩迁移,或者,如果没有很多引用,则将它们复制到迁移文件中.
使用方法获取default字段选项的值与字段中描述的相同upload_to.如果要删除方法,文档本身为您提供了两个选项:
评论更新:
在编辑迁移文件的第2步中,我刚刚包含了文档中描述的方法.您可以选择如何编辑迁移.您可以复制迁移文件中的函数并编辑引用,或者只是从迁移文件中删除默认字段,或者您可以使用其他文件中的其他函数.
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |