我最近学习了Django。现在,在我正在处理的项目之一中,我需要添加一个新字段is_core_administrator
来建模UserProfile
,这将把最早的用户设置为核心管理员。我需要为所有迁移用户更新此字段。
有没有办法做到这一点?我的意思是,当我进行迁移时,是否有可能将最旧的用户将此字段更新为true,而将其余的字段更新为false。找到最老的用户并不困难,因为我们已经有了另一个字段DateJoined
。我只想在进行迁移时更新相应的字段。
答案 0 :(得分:0)
当然,根据需要使用migrations.RunSQL
或migrations.RunPython
。
在这种情况下,后者可能更易于使用,但是您也应该能够使用单个margin-top: calc((var(--parent-height) - var(--child-height)) * 0.5);
SQL语句来完成此操作。
答案 1 :(得分:0)
您可以在Django迁移中使用RunPython选项来做到这一点。
在迁移文件的顶部创建一个函数。
def set_default_values(apps, schema_editor):
# Set the defualt values
在迁移文件的alter field操作之前添加以下行。
RunPython(set_default_values)
答案 2 :(得分:0)
请阐明您的用例。我看到您有三个选择:
class UserProfile(models.Model):
...
...
is_core_administrator=models.BooleanField(default=False)
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
if not UserProfile.objects.exists():
self.is_core_administrator=True
self.etiket=self.woo_name
return models.Model.save(self, force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)