我正在尝试使用用户名 test 从Django中的扩展用户模型中检索用户的详细信息。但是我做不到。这给了我错误:
ValueError为/以int()为基数为10的无效文字:“ test”
以下是我的代码:
models.py
class DocchainUser(models.Model):
docchainuser_name = models.OneToOneField(User, on_delete = models.CASCADE, default='x')
address = models.CharField(max_length=64,unique=True)
def __str__(self):
return self.address
views.py
def my_users(request):
if request.method == 'POST':
username = request.POST.get('username')
user = authenticate(username=username)
if user:
if user.is_authenticated:
signBool = signatureAuth(username)
if signBool == 'AUTHENTICATED':
login(request, user, backend=settings.AUTHENTICATION_BACKENDS[0])
return HttpResponseRedirect('/dashboard')
....
现在是signatureAuth():
def signatureAuth(username):
userModel = DocchainUser.objects.filter(docchainuser_name=username)
address = userModel.address
print(address)
...
我正在使用signatureAuth()方法中的用户名:test 来检索用户详细信息。 测试已经存在于我的用户以及DocchainUser模型中。
答案 0 :(得分:0)
您没有扩展的用户模型,您拥有一个与用户一对一关系的单独模型。因此,要通过用户名查询该模型,您需要遵循以下关系。
userModel = DocchainUser.objects.filter(docchainuser_name__username=username)
请注意,您在此处苦苦挣扎的原因之一是您的OneToOneField可能被错误命名;关系与整个模型有关,而不与用户名有关;您应该将其命名为docchainuser
。
(还要注意,您的if user.is_authenticated
是毫无意义的;它只是检查用户是User的实例,而不是AnonymousUser的实例,您知道这是因为您只是从User模型中明确检索了它。)>