假设我的数据库中已存在用户实例。然后,我在我的应用程序中引入了一个新模型:
.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)
但这使得观点相当长。有没有更好的方法呢?
答案 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。因此,从相应的应用程序导入适当的模型。
希望这会对你有所帮助。