为什么下面的print(owner)返回的值与我的模型中的值不同? 是否可以获取下面定义的格式化用户名? 我已经简化了我的def配置文件(请求)并取出了我的其他参数,直到我能找到获取格式化用户名的解决方案。
def profile(request):
owner = User.objects.get (formattedusername=request.user.formattedusername)
args = {'user':request.user.formattedusername}
print (owner)
return render(request, 'accounts/profile.html', args)
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
@3-alphas4numeric
[06/Nov/2017 16:18:11] "GET /account/profile/ HTTP/1.1" 200 1416
格式化用户名在我的模型中以 HCA\3-alphas4numeric 的形式存储在数据库中,它也由以下内容定义,它也是我所有其他模型中的键字段,并且没有办法使用整数作为键,因为它是一个预先存在的数据库:
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
username = models.CharField(max_length=7, unique=True)
formattedusername = models.CharField(max_length=11, unique=True, primary_key = True)
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=140)
date_joined = models.DateTimeField(default=timezone.now)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
facility = models.CharField(max_length=140)
jobdescription = models.CharField(max_length=140)
positiondescription = models.CharField(max_length=140)
coid = models.CharField(max_length=5)
streetaddress = models.CharField(max_length=140)
USERNAME_FIELD = 'username'
class Meta:
app_label = 'accounts'
db_table = "user"
def save(self, *args, **kwargs):
self.formattedusername = '{domain}{username}'.format(
domain='HCA', username=self.username)
super(User, self).save(*args, **kwargs);
当你做print(owner)
时,你会打印出USERNAME_FIELD
的值。这就是AbstractBaseUser.__str__
的实施方式。
def get_username(self):
"Return the identifying username for this User"
return getattr(self, self.USERNAME_FIELD)
def __str__(self):
return self.get_username()