在Django中修改已存在于数据库中的用户实例

时间:2016-11-02 07:31:11

标签: python django

假设我的数据库中已存在用户实例。然后,我在我的应用程序中引入了一个新模型:

.errmsg {
      color: red;
    }

我想为每个用户创建一个UserProfile实例。我知道信号可以在User()。save()之类的东西上处理。但是,如何处理已在我的数据库中的用户

目前我在<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="input-group" style=""> <input type="text" id='input_1' class="form-control number_only"> <span class="errmsg"></span> </div> <div class="input-group" style=""> <input type="text" id='input_2' class="form-control number_only"> <span class="errmsg"></span> </div> <div class="input-group" style=""> <input type="text" id='input_3' class="form-control number_only"> <span class="errmsg"></span> </div>处理它:

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    nickname = models.CharField(max_length=30, blank=True)

但这使得观点相当长。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

对于已在数据库中的用户,您可以在django shell上运行脚本。

>>from .models import *
>>from django.contrib.auth.models import User
>>users_without_profile = User.objects.filter(profile__isnull=True)
>>for user in users_without_profile:
....user.profile.nickname = 'your_choice_of_nickname'
....user.save()

然后:

select * from sys.database_files

只是旁注:像.models import *这样做一个狂野的导入是一个不好的做法,但无论如何我只是为了说明而且我也不知道你的appname。因此,从相应的应用程序导入适当的模型。

希望这会对你有所帮助。