因此,我创建了一个应用程序,此应用程序需要将一些设置保存到用户模型hence I added a model with a OneToOne field / profile model。
class Manager(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
play_onload = models.BooleanField(default=True)
在创建此模型之前,我已经注册了一些用户,这些用户也需要在新创建的模型中有条目,因为每个用户都必须在“Manager”应用程序中保存设置。
我现在的问题是,虽然我运行了迁移并为字段指定了默认值,但模型为空:
这似乎是合乎逻辑的,因为Django假定只在创建用户时填充模型。
但现在怎么会这样呢?只需修补数据库并填写所有已存在用户的条目,还改变用户创建过程?或者已经有一种更简单,更好的方法吗?
我的手动方法只是检索用户ID的完整列表并使用它们创建条目,如图所示
users = User.objects.all()
for user in users:
Manager(user=user.id)
但问题在于它是手动的(很可能甚至不是100%正确)
答案 0 :(得分:1)
创建管理>命令并使用manage.py
运行它from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
def handle(self, *args, **options):
users = User.objects.all()
for user in users:
m, c = Manager.objects.get_or_create(user=user.id)
m.save()