Django在不重新输入的情况下将对象信息获取到方法
我不知道该怎么解释。我正在尝试使用“自定义保存方法”之类的方法。无论如何,希望我的代码有意义 我目前正在测试一款Django在不重新输入的情况下将对象信息获取到方法,django,python-3.x,Django,Python 3.x,我不知道该怎么解释。我正在尝试使用“自定义保存方法”之类的方法。无论如何,希望我的代码有意义 我目前正在测试一款CustomUser型号。如果没有给出用户名,我想生成用户名。我还使用了full_clean方法,以避免保存为空的实例。以下是我所拥有的: 试验 模型方法: def full_clean_save(self): # How do I get my 'username' reckognized here if it isn't ''? # This always is =
CustomUser
型号
。如果没有给出用户名,我想生成用户名。我还使用了full_clean
方法,以避免保存为空的实例。以下是我所拥有的:
试验
模型方法:
def full_clean_save(self):
# How do I get my 'username' reckognized here if it isn't ''?
# This always is == ''
if self.username == '':
# Makes a random username from BaseUserManager
self.username = CustomUser.objects.make_random_password()
self.full_clean()
self.save()
第二次编辑:
发现这个测试打破了我的其他测试。这确实有效。出于安全原因,我还被告知使用create\u user
编辑:
但问题是,每次运行此方法时,它都会生成一个用户名,即使给定了用户名:
测试:
if
语句不是问题所在,因为这会给出相同的结果:
def full_clean_save(self):
if self.username == '':
self.username = CustomUser.objects.make_random_password()
self.full_clean()
self.save()
else:
self.full_clean()
self.save()
嗯,对不起,我要用别的东西。确切的问题是什么?你有错误吗?什么不起作用?我更新了我的问题@VaibhavVishalI更新了我的问题@dirkgroten你不应该以这种方式创建用户,因为你现在的方法是,你在数据库中保存纯文本原始密码。改为使用
create\u user
方法,该方法将散列密码并将其正确保存到数据库中。
user = {
'username': 'Test_User',
'password': 'testpassword',
'first_name': 'Testy',
'middle_name': 'Tester',
'last_name': 'Testman',
'email': 'testman@test.com',
}
def test_CustomUser_will_save_user(self):
c = CustomUser(**user).full_clean_save()
self.assertTrue(CU.objects.filter(**user).exists())
# asserts False because c.username == 'FFQ4CUK8GWnf' instead of Test_User
def full_clean_save(self):
if self.username == '':
self.username = CustomUser.objects.make_random_password()
self.full_clean()
self.save()
else:
self.full_clean()
self.save()