【发布时间】:2014-04-26 12:27:35
【问题描述】:
我必须根据标题的第一个字母向我的模型添加一个新字段“initial”。
我知道我可以添加新字段,覆盖 save() 以从现在开始自动保存初始值并使用 South 进行如下迁移。
models.py
class Book(models.Model):
...
name = models.CharField(max_length=255, primary_key=True)
...
initial = models.CharField(max_length=1, blank=True, default='')
def save(self, *args, **kwargs):
if self.name[0].isalpha():
self.initial = self.name[0]
else:
self.initial = '#'
super(Manga, self).save(*args, **kwargs)
但是表中已经存在的书籍呢?
是否可以告诉 South 自动将初始字段设置为上面已经存在的书籍?
或者我必须编写一个脚本来更新每本书根据需要设置初始值?
【问题讨论】:
-
我不确定在
South中是否有任何快速的方法,但如果我要这样做,我将获取所有现有的Book对象,然后分配@987654324 @每个。当initial字段已创建时,您在使用South迁移后执行此操作。
标签: python django django-models django-south